如果NTP在10:59:55运行,并将时间固定为11:00:13,则chron运行11:00:00和*:00:00任务,还是被跳过?
或者,如果NTP在11:00:00运行并将时间修复为10:59:48,那么这些任务是否会运行两次?
如果它们被跳过,有什么方法来解决这个问题?
其他调度程序(窗口等)呢?
-亚当
如果你运行一个NTP守护进程,你不会有这个问题,它会加快/减慢你的时钟,使它随着时间的推移,而不是跳跃。
据我所知,计划的工作不应该被跳过或运行两次。
Cron使用事件列表进行调度,所以如果时间超前,cron会简单地看到那个作业没有及时运行,并在下一个唤醒周期中运行。 如果时间跳回,作业将从事件列表中删除,并且cron不会再将其视为需要再次运行。
正如Tjofras所提到的那样,ntpd会逐渐使用漂移来调整你的时钟,而不是硬跳,所以你通常不应该看到时间跳跃,除非你自己手动改变系统时钟。
这取决于你的意思是NTP。 如果使用合理的configuration运行NTP时间同步守护程序(ntpd),则时间永远不会跳转。 守护进程持续地将系统时间推向实际时间。 它不会间隔“运行”:它会间隔查询其时间源,以确定要花费多less时间。 你永远不会看到跳过的时间,也不会以任何可检测的方式向后移动。
但是,如果通过某些其他方式进行同步,时间将会跳跃。 例如,如果您使用cron作业来运行ntpdate
或ntpd -q
(除非您有一个非常好的理由并了解可能的可怕后果,否则您不应该这样做),那么您的系统时间可能会瞬间大幅改变运行。 第一次启动ntpd时,也可能会跳转,具体取决于您如何configuration。
关于克朗:
如果由于时间跳跃,cron作业应该运行的确切时间不会发生(被跳过),那么它就不会运行。 它将在下一个时间间隔运行。
如果一个cron作业应该运行的确切时间会发生两次(时间向后跳),那么它将同时运行两次。
为了解决cron问题,运行ntpd作为一个服务/守护进程,从而确保你的时间永远不会跳。 如果您手动跳转时间,则必须检查所有的cron作业,以确定没有运行(或将运行两次)并手动干预。
当然,最好的解决办法是解决时间问题。 cron问题只是更严重的时间跳跃问题的症状,这可能会导致cron之外的各种问题(日志logging,审计,SELinux等)
如果时间变了,我已经看到了Windows中的Backup Exec作业。 当时间倒退一个小时,他们特别不喜欢它。
正如其他人所说的那样,运行ntpd可以防止这个问题,但是如果由于时间跳跃而遇到问题,可以使用anacron。 它是专门用于计算机不能24/7全天候运行,尽快运行的工作,但我不明白为什么它不会在你描述的情况下工作。