
我使用 fedora20 及其預設的 cron。我有一個 cron 作業腳本,它使用 rtcwake 讓伺服器在上午 10:30 進入睡眠狀態,並在中午 12:30 喚醒。如果我在上午 9:40 手動運行腳本,它也會在中午 12:30 喚醒。如果我在上午 9:40 手動運行腳本,它會在中午 12:30 醒來後運行上午 10:30 錯過的 cron 任務並立即進入睡眠狀態(這會使其在下午 3:30 醒來)嗎?
這似乎是我的伺服器發生的情況,我想知道 cron 是否在喚醒後運行錯過的作業。如果是這樣,有什麼辦法可以改變這種行為嗎?非常感謝。
答案1
Fedora 預設為慢性病,它結合了類似 anacron 的功能,即使在系統關閉時也可以定期運行作業。預設/etc/anacrontab
看起來像這樣:
#period in days delay in minutes job-identifier command
1 5 cron.daily nice run-parts /etc/cron.daily
7 25 cron.weekly nice run-parts /etc/cron.weekly
@monthly 45 cron.monthly nice run-parts /etc/cron.monthly
/etc/cron.[daily,weekly,monthly]
……這表示預設情況下,即使電腦關閉,您放入這些目錄之一 ( ) 的任何腳本也會運行。但是,/etc/crontab
或使用者 crontab中的內容/etc/cron.d
不會以這種方式運作。如果現有的定期計劃不適合您,請了解man anacrontab
如何新增條目。
答案2
並非所有cron
守護程式都處理非連續正常運作時間的情況。專門為執行「錯過的」作業而設計的一種是anacron
。