2011-09-26 104 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

相关问题