Schedule jobs
為什麼需要工作排程? 排程對於許多管理者來說,是非常重要的一個工作,因為這可以省去大部份的時間來做相同的事,只要您下達好指定的時間,那麼時間一到,系統就會自動把您的工作都完成,如此一來您也不用盯者營幕去看那重覆又無聊事了。
當然排程工具有很多種,但在 Novell CLP 裡,重點是放在 crontab 和 at 上,這兩種不同的地方在於 crontab 是不斷循環的執行,而
at 是只執行一次,也就是說,如果你的工作是每天都要執行,那麼就使用 crontab,若只是要執行一次,那麼就使用 at 就可以了。
小弟在次前也有寫一篇 at & cron 排程管理 的文章,完全和本章符合,所以您可以直接參該文章。
at
at 工具是用來指定下一次工作的時刻,完整的用法如下:
at -f [FILENAME] TIME
選項介紹:
-f 執行指定檔案的內容,一般會直接指定可執行的檔案。
範例:
在今天的下午 5 點 33 分執行 /root/test.sh。
root # at /root/test.sh 5:33pm
在 2004 年 7 月 10 日的早上 10 點 執行 /root/test.sh 檔案。
root # at -f /root/test.sh 10:00am 7/10/2004 |
at 還分別有另外的兩個工作,atq 和 atrm,它們是用來查尋目前目排程的工作和移除所指定的排程工作。
root # atq
6 2004-07-10 10:00 a root
root # |
從上面可以看到程排的序號 6 中,有所指定的排程,如果要移除 6 號排程的話,可以使用 atrm 這個指令來移除
執行完之後然後下一次 atq 來看看,看看 6 號工作是否已被刪除。
如此 6 號的排程就被刪除了。
cron
cron 是目前最常用來做指定排程的工作,因為它可以指定持續性的排程,比方說指定每天的固定時間做指定的事項。在指定排之前,必需要排程的工作填寫好,如此才能依照所指定的時間來啟動工作。
cron 的格式
cron 的格式分為 6 欄,每個欄位使用一個空白分開;分別為:
[minute] [hour] [day of month] [month] [day of week] [Command]
以上的範圍分別為:
- minute 0-59
- hour 0-23
- day of month 1-31
- month 1-12
- day of week 0-7 (0 和 7 代表禮拜天)
- 而 Command 指的是要執行的檔案。
了解了格式之後,可以開始指定行程了。要指定行程,要下 crontab -e 這個指令,預設會開啟 vi 編輯器來編輯。
root # crontab -e
____________________________________________________________________
#每天的凌晨 12 點程中午 12 點執行一次 /root/virus/get_virus_def.sh 這個檔案
0 0,12 * * * /root/virus/get_virus_def.sh > /dev/null
2>&1
#每五分鐘執行一次 /root/net/ping.sh
*/5 * * * * /root/net/ping.sh > /dev/null 2>&1
#每個禮拜一的凌晨 1 點執行備份 /root 的工作
0 1 * * 1 /bin/tar -zcvf /backup/root.tar.gz /root >
/dev/null 2>&1
:__________________________________________________________________
|
crontab 的其它選項
- -u 設定某一使用者,預設為目前使用者。
- -l 列出某一使用者的排程。
- -e 編輯某一使用者的排程。
列出 steven 的排程工作:
root # crontab -u steven -e
*/1 * * * * ping 168.95.1.1 -c 1
root # |
編輯 steven 的排程工作:
root # crontab -u steven -l
____________________________________________________________________
*/1 * * * * ping 168.95.1.1 -c 1
:__________________________________________________________________ |
注意事項
使用 cron 排程時,請先確定 crond 這個服務是否有啟動,如果您已加入排程了,但一直沒有動作,那麼有可能是您的 crond 這個服務沒有啟動。
請輸入以下指令:
root # cd /etc/init.d/cron start
root # |
這樣,就可以啟動排程工作了。
當 cron 完成了您所指定的工作時,會馬上寄出一份工作項目給您,這樣固然是好意,但是如果今天做的是重覆而且頻繁的工作時,比如說 5
分鐘監控流量一次,那麼不就會每 5 分鐘就寄一次信了嗎?就像下面這樣:

為了防止這樣的事發生,就必需加入一些設定:
*/5 * * * * /root/net/ping.sh > /dev/null 2>&1 |
其中,> /dev/null 2>&1 指的是,不論執行正不正確,都不要寄信到指定者的信箱,也是說不通知執行結果。
03/06/2006
|