基于系统时间或自身时间流逝的 Cronjob

基于系统时间或自身时间流逝的 Cronjob

cronjob是根据系统时间还是根据自己的时间流逝?如果是系统时间,当我手动更改系统时间时,cronjob是否会相应地遵循新设置的时间?

答案1

例如,如果您将时钟从 12:04 移至 12:06,并且您有安排在 12:05 的工作,这些工作将不是跑步。

如果您必须每天 12:05 运行作业或者之后尽早(在通电或系统时钟之后),然后每分钟运行该作业(或者如果可以接受,则以更长的间隔运行)并让其脚本检查它是否是当天最后一次运行的基础上状态文件。如果该状态文件存在并且是最新的,则脚本应立即退出(即它在 12:05 或此后最早的运行机会运行)。如果没有,请设置状态文件并运行脚本的其余部分,这样在时钟到达第二天 12:05 之前,任何进一步的调用都不会执行任何操作。

特别是如果作业需要更长的时间,重要的是先更新状态文件然后继续运行,否则 12:06 检查将找不到更新的状态并开始并行运行另一个作业。

答案2

cron使用系统时钟,每分钟检查一次。对于更改系统时钟,man页面中的以下摘录可能有用:

当时钟变化少于 3 小时时,例如在夏令时开始和结束时,需要特别注意。如果时间提前,那些在跳过的时间内运行的作业将在更改后立即运行。反之,如果时间向后移动小于3小时,则那些落入重复时间的作业将不会重新运行。

相关内容