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 這個指令來移除

root # atrm 6

執行完之後然後下一次 atq 來看看,看看 6 號工作是否已被刪除。

root # atq
root #

如此 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
:__________________________________________________________________

注意事項

  • 啟用 crond

使用 cron 排程時,請先確定 crond 這個服務是否有啟動,如果您已加入排程了,但一直沒有動作,那麼有可能是您的 crond 這個服務沒有啟動。

請輸入以下指令:

root # cd /etc/init.d/cron start
root #

這樣,就可以啟動排程工作了。

  • 如何防止 cron 不斷寄信到指定者信箱

當 cron 完成了您所指定的工作時,會馬上寄出一份工作項目給您,這樣固然是好意,但是如果今天做的是重覆而且頻繁的工作時,比如說 5 分鐘監控流量一次,那麼不就會每 5 分鐘就寄一次信了嗎?就像下面這樣:

為了防止這樣的事發生,就必需加入一些設定:

*/5 * * * * /root/net/ping.sh > /dev/null 2>&1

其中,> /dev/null 2>&1 指的是,不論執行正不正確,都不要寄信到指定者的信箱,也是說不通知執行結果。

03/06/2006

Novell CLP 筆記 | 首頁