题 为什么cronjobs在错误的时间运行?


我的cronjobs设置每天都在我的Ubuntu服务器上运行。

例如。 0 4 * * *命令

它们正在运行,除非它们提前8小时运行。设置服务器时,它最初设置为UTC时间。我跑了 sudo dpkg-reconfigure tzdata 将服务器设置为比UTC低6小时的CST。有趣的是,我在PST比竞争对手落后8小时,但我不知道服务器如何知道这一点。

如果我运行命令 date,它显示了CST的时间。

必须有一些时间配置错误的地方。我在哪里可以解决这个问题?


9
2018-02-04 16:19






答案:


您是否记得在更改时区后重新启动cron?如果没有,cron可能仍然拥有从最初开始时起的时区概念。

虽然不是绝对必要,但我通常建议在更改时区后重新启动计算机 - 服务器的时区不应该更改(或者至少它应该是 非常 不经常),这保证服务器上的每个程序都已重新启动并知道更改:-)


16
2018-02-04 16:29



不,我没有重启。我已经这样做,并将等待,看看是否是问题(我认为这可能是)。 - Matt McCormick
重新启动cron服务后,它现在运行的时间与我使用tzdata设置的时区相同。谢谢。 - Donny Kurnia
我注意到/ var / log / cron中的条目即使在重启crond之后也显示错误的时间。重新启动rsyslog修复了该问题。 - zymhan
@WildVelociraptor是的syslog还将使用旧的时区数据,直到重新启动(因此即使它们在正确的时间运行,它也会给错误的时间戳错误)。在时区数据更改之前长时间运行并启动的任何其他内容将表现出类似的行为,这就是通常指示重新启动的原因。 - voretaq7


对我来说,我发现当我跑步时 hwclock 命令时间是一小时不同于我跑的时间 date 命令。要解决这个问题,你可以致电 hwclock --systohc 这将同步两次并在预期的时间运行cronjobs。


4
2018-02-26 16:35



就我而言 date 和 hwclock 报告相同的时间,但cron仍然没有做我期望它。 - unfa