at & cron 排程管理
时间:2007-01-15 来源:darrenshen
at & cron 排程管理
參考:
- man at
- man crontab
為什麼需要工作排程? 排程對於許多管理者來說,是非常重要的一個工作,因為這可以省去大部份的時間來做相同的事,只要您下達好指定的時間,那麼時間一到,系統就會自動把您的工作都完成,如此一來您也不用盯者營幕去看那重覆又無聊事了。
排程工具
在 Linux 上,用來排程的工具有兩種,一種是 at,而另一種是 cron,這兩種有各別不同使用的地方,at 工具只會執行一次您所指定的工作,一旦該工作執行之後,就會自動刪除該項工作;而 cron 工具則是一直循環下去,會在指定的日期、時間執行工作。我們將會示範這兩種工具的使用方法。
at
at 工具是用來指定下一次工作的時刻,完整的用法如下:
at -f [FILENAME] TIME
參數介紹:
-f 執行指定檔案的內容,一般會直接指定可執行的檔案。
範例:
在今天的下午 5 點 33 分執行 /root/test.sh。
# at /root/test.sh 5:33pm |
在 2004 年 7 月 10 日的早上 10 點 執行 /root/test.sh 檔案。
# at -f /root/test.sh 10:00am 7/10/2004 |
at 還分別有另外的兩個工作,atq 和 atrm,它們是用來查尋目前目排程的工作和移除所指定的排程工作。
# atq |
從上面可以看到程排的序號 6 中,有所指定的排程,如果要移除 6 號排程的話,可以使用 atrm 這個指令來移除
# atrm 6 |
執行完之後然後下一次 atq 來看看,看看 6 號工作是否已被刪除。
# atq |
如此 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 編輯器來編輯。
# 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 :__________________________________________________________________ d |
注意事項
- 啟用 crond
使用 cron 排程時,請先確定 crond 這個服務是否有啟動,如果您已加入排程了,但一直沒有動作,那麼有可能是您的 crond 這個服務沒有啟動。
請輸入以下指令:
# cd /etc/init.d |
這樣,就可以啟動排程工作了。
- 如何防止 cron 不斷寄信到指定者信箱
當 cron 完成了您所指定的工作時,會馬上寄出一份工作項目給您,這樣固然是好意,但是如果今天做的是重覆而且頻繁的工作時,比如說
5 分鐘監控流量一次,那麼不就會每 5 分鐘就寄一次信了嗎?為了防止這樣的事發生,就必需加入一些設定:
*/5 * * * * /root/net/ping.sh > /dev/null 2>&1 |
其中,> /dev/null 2>&1 指的是,不論執行正不正確,都不要寄信到指定者的信箱,也是說不通知執行結果。