来自crontab的手册页。
string meaning
------ -------
@daily Run once a day, "0 0 * * *".
@midnight (same as @daily)
如果系统总是在午夜关闭,那么@daily永远不会被执行?指定我想每天运行一次这个工作的正确方法是什么,但我不关心它何时在一天内执行?
答案 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:这是一个竞争条件,你的工作可以执行,但可能不会。