讓你學(xué)會(huì)Linux計(jì)劃任務(wù)
在過去的一年里,微軟的windows 7大行其道,不過Linux系統(tǒng)也越來(lái)越受到歡迎,你對(duì)Linux系統(tǒng)了解么?你是Linux系統(tǒng)的應(yīng)用者么?本文為你詳細(xì)介紹Linux計(jì)劃任務(wù),為你在學(xué)習(xí)Linux計(jì)劃任務(wù)時(shí)起一定的作用。
Linux有三種計(jì)劃任務(wù):
at:指定一個(gè)時(shí)間執(zhí)行一個(gè)任務(wù) (適用一個(gè)或多個(gè)任務(wù),執(zhí)行一次后就不用)
cron:根據(jù)一個(gè)時(shí)間表自動(dòng)執(zhí)行任務(wù) (使用一個(gè)或多個(gè)任務(wù),周期性執(zhí)行)
系統(tǒng)級(jí)別的計(jì)劃任務(wù)及其擴(kuò)展anacron:在一個(gè)指定時(shí)間間隔錯(cuò)過后自動(dòng)執(zhí)行任務(wù)
一、at服務(wù):安排一個(gè)任務(wù)在未來(lái)執(zhí)行,需要一個(gè)atd的系統(tǒng)后臺(tái)進(jìn)程
#at now+2 minutes 回車
>輸入要執(zhí)行的命令
>ctrl+d 結(jié)束輸入
atq;查詢當(dāng)前的等待任務(wù)
用atq來(lái)查詢,已經(jīng)運(yùn)行的任務(wù),就消失了。這就是at計(jì)劃任務(wù)的重點(diǎn),只運(yùn)行一次
atrm:刪除等待任務(wù)
啟動(dòng)計(jì)劃任務(wù)后,如果不想啟動(dòng)設(shè)定好的計(jì)劃任務(wù)可以使用atrm命令刪除。
格式:atrm 任務(wù)號(hào)
命令后面跟計(jì)劃任務(wù)編號(hào),如果不跟,就會(huì)刪除這個(gè)用戶所有的計(jì)劃任務(wù)。
還可以進(jìn)入到/var/spool/at目錄里把計(jì)劃任務(wù)刪除,計(jì)劃任務(wù)的文件都保存在該目錄里,可以用rm -f 文件名來(lái)刪除(以文件的形式刪除計(jì)劃任務(wù),因?yàn)橛?jì)劃任務(wù)是以文件形式保存在該目錄中)
在通常情況下,超級(jí)用戶都可以使用這個(gè)命令。對(duì)于其他用戶來(lái)說(shuō),能否可以使用就取決于兩個(gè)文件:/etc/at.allow和/etc/at.deny
如果你要讓哪個(gè)用戶不能使用計(jì)劃任務(wù),就直接把他的用戶名寫進(jìn)去就可以了,一排只能寫一個(gè)。
同時(shí)寫入allow 及deny, 允許.
二、cron服務(wù)
上面已經(jīng)簡(jiǎn)單介紹了cron的一些進(jìn)程和控制。下面我們來(lái)看看cron怎么實(shí)現(xiàn)。
相對(duì)與at,cron的優(yōu)點(diǎn)就是能夠周期性的執(zhí)行某個(gè)命令,at卻只能執(zhí)行一次
cron的后臺(tái)進(jìn)程名字是crond ,cron也是system V的服務(wù),所以我們可以service crond start|stop 來(lái)啟動(dòng)和關(guān)閉此服務(wù),也可以使用chkconfig或者ntsysv來(lái)選擇cron服務(wù)的默認(rèn)開啟,這些命令在以前我們都講過的
#crontab -e 編輯當(dāng)前用戶的cron表
#crontab -l 查看當(dāng)前用戶的cron表
#crontab -r 刪除當(dāng)前用戶的cron進(jìn)程
#crontab -u 用戶名 以某用戶的身份來(lái)控制cron表
還有個(gè)重要的知識(shí)點(diǎn),就是當(dāng)用戶的計(jì)劃任務(wù)建立后是存放在/var/spool/cron這個(gè)目錄
當(dāng)使用crontab -e編輯當(dāng)前用戶的cron表后,會(huì)出現(xiàn)一個(gè)vi文件,cron的格式是這樣的。分成兩列,左邊是時(shí)間,右邊是運(yùn)行的命令。時(shí)間是由5個(gè)部分組成。
例:
* * * * * wall hello everyone
5個(gè)星號(hào)分別代表:minute hour day-of-month month-of-year day-of-week 分時(shí)日月周 ,而wall hello everyone 這是命令內(nèi)容。上面的意識(shí)是每分每小時(shí)每天每月每周廣播hello everyone。具體時(shí)間大家可以自己定義。如果要每?jī)煞昼姲l(fā)送就用*/2代替***個(gè)*。也可以是用具體時(shí)間來(lái)表示。
Crontab –e 編輯的任務(wù)不要加入用戶名
***個(gè)*星號(hào)代表個(gè)小時(shí)的第幾分鐘:minute 范圍是從0-59
第二個(gè)*星號(hào)代表每天的第幾個(gè)小時(shí):hour 范圍是從0-23
第三個(gè)*星號(hào)代表每月的第幾個(gè)日:day-of-month 范圍從1-31
第四個(gè)*星號(hào)代表沒年的第幾個(gè)月:month-of-year 范圍從1-12
第五個(gè)*星號(hào)代表每周的星期幾:day-of-week 范圍從0-6,其中0表示星期日
用戶名:也就是執(zhí)行程序要通過哪個(gè)用戶來(lái)執(zhí)行,這個(gè)一般可以省略;
命令:執(zhí)行的命令和參數(shù)。
如果我要表示9月10日25分執(zhí)行l(wèi)s var/spool/cron任務(wù)怎么表示?
25 * 10 9 * ls var/spool/cron
*/1 * * * 0 wall Hello redking.blog.51cto.com
*/ 表示每多少分鐘執(zhí)行一次哈~
當(dāng)制定了cron任務(wù)后,可以用crontab -l查看, 也可以到/var/spool/cron/目錄查看。里面的文件名字就是對(duì)應(yīng)用戶的cron任務(wù)
可以使用crontab -r 來(lái)刪除當(dāng)前用戶的cron
vim /etc/crontab 與crontab -e寫入的定時(shí)運(yùn)行有什么區(qū)別?
vim /etc/crontab:是系統(tǒng)級(jí)別定義的crontab,/etc/crontab的所有者和組都是root
crontab -e :是用戶自定義的crontab,是所有的用戶都可以寫入的
兩種方法記錄的位置不一樣,一個(gè)在/etc/ 另一個(gè)在/var/ 里面。都被cron服務(wù)調(diào)用哈~
三、系統(tǒng)級(jí)別的計(jì)劃任務(wù)及其擴(kuò)展anacrontab
anacrontab就是系統(tǒng)計(jì)劃任務(wù)的擴(kuò)展文件:在一個(gè)指定時(shí)間間隔錯(cuò)過后自動(dòng)執(zhí)行任務(wù)
這個(gè)是系統(tǒng)設(shè)置好了,清理系統(tǒng)垃圾或者是自動(dòng)執(zhí)行某些腳本的系統(tǒng)任務(wù),一般我們做了解就行了,不要更改
配置文件是/etc/anaconrtab
- # /etc/anacrontab: configuration file for anacron
- # See anacron(8) and anacrontab(5) for details.
- SHELL=/bin/sh
- PATH=/sbin:/bin:/usr/sbin:/usr/bin
- MAILTO=root
- #####格式是這樣的:period(頻率.天數(shù)) delay(延遲,分鐘) job-identifier command
- 1 65 cron.daily run-parts /etc/cron.daily
- 7 70 cron.weekly run-parts /etc/cron.weekly
- 30 75 cron.monthly run-parts /etc/cron.monthly
SHELL:就是運(yùn)行計(jì)劃任務(wù)的解釋器,默認(rèn)是bash
PATH:執(zhí)行命令的環(huán)境變量
MAILTO:計(jì)劃任務(wù)的出發(fā)者用戶
HOME:家目錄為/
run-parts是一個(gè)腳本,在/usr/bin/run-parts,作用是執(zhí)行一個(gè)目錄下的所有腳本/程序。
run-parts /etc/cron.hourly執(zhí)行目錄/etc/cron.hourly/之下的所有腳本/程序.
run-parts下面就是運(yùn)行的命令
***行的意思是:每天開機(jī)65分鐘后就檢查cron.daily文件是否被執(zhí)行了,如果今天沒有被執(zhí)行就執(zhí)行他
第二行的意思是:每隔7天開機(jī)后70分鐘檢查cron.weekly文件是否被執(zhí)行了,如果一周內(nèi)沒有被執(zhí)行就執(zhí)行他
和at差不多,就是/etc/cron.deny這個(gè)配置文件來(lái)控制, 同時(shí)寫入allow 及deny, 允許.以上就是Linux計(jì)劃任務(wù)。
【編輯推薦】