2011-09-26 89 views
5

從crontab的手冊頁。當系統關機時,cron作業會發生什麼情況?

 string   meaning 
     ------   ------- 
     @daily   Run once a day, "0 0 * * *". 
     @midnight  (same as @daily) 

所以@daily永遠不會執行,如果系統總是在午夜關機?指定我希望每天運行一次這項工作的正確方法是什麼,但我不在乎它在一天中的執行時間?

+4

dup http://serverfault.com/questions/52335/job-scheduling-using- crontab-what-will-happen-when-computer-is-shutdown-during-t – jman

+1

服務器並不意味着要在一夜之間關閉......爲什麼不把它保持在線並每週關閉一次?或者至少將cron作業改爲更早運行? –

回答

2

作業可能會運行,但可能無法完成。 cron是通過一個守護進程實現的,所以它一直在運行。根據系統的關閉順序,cron實際上可能會在關機過程的相當晚的時候發送關機信號,因此計劃在關機開始時刻執行的作業仍可能運行。

例如如果關機開始於00:00:00,但直到00:00:05(午夜後5秒)纔會發送一個關閉信號,則短時間運行的2秒鐘作業可能還有時間完成

但是,如果任何依賴於作業的服務已經關閉或正在關閉,那麼它不太可能完成,例如...腳本將一個小的mysql服務器的數據......但是mysql在00:00:01關閉,你的腳本直到00:00:02纔到達mysql部分。

tl; dr:這是一種競爭條件,你的工作可以執行,但可能不會。

+1

+1先生,很好的答案! – chown

相關問題