系统处于关闭状态时,cron作业会发生什么?

时间:2011-09-26 19:26:28

标签: crontab

来自crontab的手册页。

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

如果系统总是在午夜关闭,那么@daily永远不会被执行?指定我想每天运行一次这个工作的正确方法是什么,但我不关心它何时在一天内执行?

1 个答案:

答案 0 :(得分:2)

作业可能会运行,但可能无法完成。 cron是通过守护进程实现的,因此它始终在运行。根据系统的关闭顺序,cron实际上可能会在关机过程中很晚才发送关闭信号,因此在关机开始时安排的作业可能仍在运行。

e.g。如果关机完全在00:00:00开始,但是直到00:00:05(午夜后5秒)才开始向cron发送一个终止信号(那么一个短暂运行的2秒工作可能还有时间完成

但是,如果作业所依赖的任何服务已经关闭或正在关闭,那么它就不可能完成。例如...脚本为一个小块数据ping一个mysql服务器......但mysql在00:00:01关闭,你的脚本直到00:00:02才到达mysql部分。

tl; dr:这是一个竞争条件,你的工作可以执行,但可能不会。