一、定期的任務執行,簡稱任務計劃
在這些指定的任務執行時,不會顯示到螢幕上,而是以郵件的方式發送給任務的發起者:mail
1.在未來的某個時間僅執行一次
使用"at"或者"batch"進行設定,他們兩個的使用方法和參數都一樣,這裡以"at"為例;
時間的表示法:HH:MM、NN/DD/YY或者在時間後面跟上AM/PM來表示上下午、或now+# ("#"表示幾分鐘或幾小時或幾天或幾周,其機關:min、hours、days、week)
在某個時間設定要執行的任務後使用"Ctrl+d",來送出任務。
#at -l 或 #atq ---檢視目前任務計劃的清單
at -r JOB_NU 或atrm JOB_NU ---移除尚未執行的任務
#at -r 1
#atrm 1
at -f JOB_FILE TIME 将多個任務寫進檔案中,在某個時間去讀取該檔案,以達到某個時間執行任務
#at -f ~/job/job.txt now+1min
2.在未來周期性的去執行一個任務
在中周期的執行任務分為兩類:
第一類:屬于系統任務,定義一些計劃,用于系統自身的日常維護和運作
例如"what is"的資料庫,就是系統定期的對其進行更新
其配置檔案是:/etc/crontab
内容:
SHELL=/bin/bash ---指定解釋器為bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin ---為任務執行指定環境變量
MAILTO=root ---指定發送郵件的使用者
HOME=/ ---使用者運作的路徑,這裡是根目錄
# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
該檔案内容分為7個字段:
分鐘 小時 天 月 星期 任務執行的發起者 執行的任務
[00-59] [00-23] [01-31] [01-12] [00-07] USERNAME ROLE
其中:通配:"*"
非連續時間點:","
如:每小時的15和45分鐘 ------> 15,45 * * * *
連續的時間點:"- "
如:每天的淩晨3點的8-10分鐘 ------> 8-10 3 * * *
每幾:"*/#"
如:每三分鐘執行一次 ------> */3 * * * *
注:這個檔案中的指令基于bash外殼程式,是以當執行一些指令時需要指定其二進制檔案所在的路徑,這裡使用PATH指派,也可以在使用指令時寫上其絕對路徑,但要清楚的是這裡的PATH和bash中的PATH是兩個不同的概念。
第二類:屬于使用者定義的一些周期行任務
crontab 定義使用者的周期任務
參數: -e:編輯計劃内容
-l:列出計劃内容
-r:移除所有的計劃内容
以上的三個參數直接操作的是作用于目前執行"crontab"指令的使用者,如:
#crontab -e ---編寫周期執行的任務,儲存之後會在/var/spool/cron/下生成一個和使用者名同名的檔案,其檔案内容分為6個字段,和系統任務的字段一樣,隻是和系統任務比較缺少了任務的執行者這以字段
-u:為某個使用者制定計劃内容
#crontab -u redhat -e ---儲存結束後,檔案的名字将自動命名為redhat
注:所有的任務會按照預訂的周期運作,其前提必須是伺服器處于開機運作狀态。
3.anacron:檢查crontab中那些過期且沒有執行的任務,預設是關閉的
其配置檔案:/etc/anacrontab
# /etc/anacrontab: configuration file for anacron
# See anacron(8) and anacrontab(5) for details.
SHELL=/bin/sh ---指定解釋器為bash
MAILTO=root ---指定發送郵件的使用者
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
四個字段意義:
• 時間間隔:執行任務的時間間隔,機關為天。
• 等待時間:在時間間隔到期後,如果任務沒有順利執行,則會等待此處設定的時間,然後再次嘗試執行。
• 任務辨別:有關此任務的說明,它可包含任何非空格的字元(/除外),通常都用在anacron資訊中,或是此任務的時間戳檔案名。
• 指令:實際執行的任務。
當任務完成後,anacron會将此日期記錄在/var/spool/anacron目錄的Timestamp檔案中,預設的Timestamp檔案有三個:cron.daily,cron.monthly和cron.weekly
本文轉自 向陽草米奇 51CTO部落格,原文連結:http://blog.51cto.com/grass51/793051,如需轉載請自行聯系原作者