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 2004-07-10 10:00 a root
#

從上面可以看到程排的序號 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
# ./crond start
#

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

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

當 cron 完成了您所指定的工作時,會馬上寄出一份工作項目給您,這樣固然是好意,但是如果今天做的是重覆而且頻繁的工作時,比如說

5 分鐘監控流量一次,那麼不就會每 5 分鐘就寄一次信了嗎?為了防止這樣的事發生,就必需加入一些設定:

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

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

 
Index