Linux工作調(diào)度的種類(lèi):at,cron
兩種工作調(diào)度的方式:
1、一種是突發(fā)性的,這次昨晚就不會(huì)在做奸披,也就是單次執(zhí)行的工作
2、另一種是例行性的涮雷,也就是沒(méi)過(guò)一段時(shí)間就會(huì)執(zhí)行一次的工作
at:可以處理只執(zhí)行一次的指令
crontab:crontab這個(gè)命令所設(shè)置的命令會(huì)一直執(zhí)行下去阵面。
實(shí)際運(yùn)行單一工作調(diào)度
at [-mldv] Time
執(zhí)行at會(huì)進(jìn)入所謂的at shell環(huán)境,從而執(zhí)行多條命令
atq:查詢(xún)目前主機(jī)上有多少的at工作調(diào)度
atrm[jobnumber]刪除某個(gè)工作
batch:系統(tǒng)有空時(shí)才進(jìn)行后臺(tái)任務(wù),有空的意思是說(shuō)它會(huì)在CPU工作負(fù)載小于0.8的時(shí)候样刷,才會(huì)進(jìn)行你所執(zhí)行的工作
循環(huán)執(zhí)行的例行性工作調(diào)度
Linux通過(guò)crontab來(lái)進(jìn)行循環(huán)的例行性工作調(diào)度仑扑,當(dāng)用戶(hù)使用crontab這個(gè)命令來(lái)新建工作調(diào)度之后,該項(xiàng)工作就會(huì)被記錄到/var/spool/cron/里面颂斜,而且是以賬號(hào)來(lái)作為判別的夫壁。
crontab的語(yǔ)法:
crontab [-u username] [-l|-e|-r]
-u:只有root才能執(zhí)行這個(gè)任務(wù),也即幫其他用戶(hù)新建/刪除crontab工作調(diào)度
-e:編輯crontab的工作內(nèi)容
-l:查閱crontab的工作內(nèi)容
-r:刪除所有的crontab的工作內(nèi)容沃疮,若僅僅需要?jiǎng)h除一項(xiàng)盒让,則用-e去編輯即可
若第一次執(zhí)行crontab,則需要編輯crontab的配置方式司蔬,可通過(guò)命令select - editor來(lái)修改
舉例:用dmtsai的身份在每天的12:00發(fā)信給自己
crontab -e進(jìn)入編輯模式
0????????? 12????? * ???????? * ??????? * ?? mail dmtsai? -s? "at 12:00"</home/dmtsai/.bashrc
分???????? 時(shí)???? 日??????? 月??????? 周 <==============命令串=================>
*(星號(hào)):代表任何時(shí)刻都接受
邑茄,(逗號(hào)):代表分割時(shí)間段,舉例0??? 3,6??? *?? *??? *代表要執(zhí)行的工作時(shí)間為3:00和6:00
-(減號(hào)):代表一段時(shí)間范圍內(nèi)
/n(斜線(xiàn)):代表每個(gè)n個(gè)單位俊啼,舉例來(lái)說(shuō)? */5???? *??? *???? * command就代表每5分鐘執(zhí)行一次
系統(tǒng)的配置文件:/etc/crontab
crontab -e是針對(duì)用戶(hù)的cron來(lái)設(shè)計(jì)的肺缕,如果是系統(tǒng)要執(zhí)行的crontab,則只要編輯/etc/crontabb這個(gè)文件即可
通過(guò)cat /etc/crontab查看其內(nèi)容
可以看到和用戶(hù)的crontab -e不同的是授帕,在執(zhí)行時(shí)間后面加了一個(gè)執(zhí)行身份的選項(xiàng)
下面我們?cè)賮?lái)說(shuō)一下run-parts同木,run-parts的功能是執(zhí)行后面所跟目錄里的所有文件,因此對(duì)于/etc/crontab來(lái)說(shuō)跛十,它有兩種執(zhí)行命令的方式:1彤路、直接執(zhí)行命令,eg:01 * * * dmsai mail -s "testing" kiki < /home/dmtsai/text.txt? 2芥映、以目錄方式執(zhí)行洲尊,eg:*/5 * * * * root run-parts /root/runcron
可喚醒停機(jī)期間的工作任務(wù)anacron
anacron并不是用來(lái)代替crontab的,anacron存在的目的是處理非24小時(shí)為單位或者是在開(kāi)機(jī)后立即進(jìn)行anacron的操作奈偏,它會(huì)去檢測(cè)停機(jī)期間應(yīng)該進(jìn)行但是沒(méi)有進(jìn)行的crontab任務(wù)坞嘀,并講該任務(wù)執(zhí)行一遍然后anacron就會(huì)自動(dòng)停止了。
cat /etc/anacrontab返回如下:
現(xiàn)在我們來(lái)解釋一下第一行惊来,它是這樣運(yùn)行的
1丽涩、由/etc/anacrontab分析到cron.daily這項(xiàng)工作名稱(chēng)的天數(shù)為1天;
2裁蚁、由/var/spool/anacron/cron.daily取出最近一次執(zhí)行anacron的時(shí)間戳内狸;
3、由上個(gè)步驟與當(dāng)前的時(shí)間比較厘擂,差異天數(shù)為1天以上(含1天)昆淡,就準(zhǔn)備執(zhí)行命令;
4刽严、若準(zhǔn)備執(zhí)行命令昂灵,根據(jù)/etc/anacrontab的設(shè)置講延遲5分鐘避凝;
5、延遲時(shí)間過(guò)后眨补,開(kāi)始執(zhí)行后續(xù)命令管削。
6、執(zhí)行完畢后撑螺,anacron程序結(jié)束含思。