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

bal*_*lki 5 crontab

从crontab的手册页.

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

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

Mar*_*c B 4

该作业可能会运行,但可能不会完成。cron 是通过守护进程实现的,因此它始终在运行。根据系统的关闭顺序,cron 实际上可能会在关闭过程中相当晚的时候收到关闭信号,因此安排在关闭开始时的作业可能仍然会运行。

例如,如果关机恰好在 00:00:00 开始,但直到 00:00:05(午夜后 5 秒)才向 cron 发送终止信号(,那么短时间运行的 2 秒作业可能仍有时间完全的。

但是,如果该作业所依赖的任何服务已经关闭或正在关闭,那么它就不太可能完成。例如...脚本对 mysql 服务器执行 ping 操作以获取一小部分数据...但是 mysql 在 00:00:01 关闭,并且您的脚本直到 00:00:02 才到达 mysql 部分。

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