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

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

我已经设置了 cronjobs,在我的 Ubuntu 服务器上每天运行。

例如 0 4 * * * 命令

它们正在运行,只是运行时间提前了 8 小时。设置服务器时,最初设置为 UTC 时间。我运行sudo dpkg-reconfigure tzdata设置服务器为 CST,比 UTC 晚 6 小时。有趣的是,我使用的是 PST,比 UTC 晚 8 小时,但我不知道服务器如何知道这一点。

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

肯定是某个地方的时间配置有误。我该去哪里解决这个问题?

答案1

更改时区后,您是否记得重新启动 cron?如果没有,cron 可能仍保留最初启动时的旧时区概念。

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

答案2

我发现,当我运行该 hwclock命令时,时间与我运行命令时的时间相差一个小时date。要解决这个问题,您可以调用hwclock --systohc它将同步两个时间并在预期时间运行 cronjobs。

答案3

在 Ubuntu 20 上,使用以下命令重新启动 cron 守护程序:

sudo service cron restart

答案4

要验证此问题,您还可以查看 cron 日志,您会在 cron 日志中看到不需要的时间。当设置了时区但未重新启动 cron 服务时,就会遇到此问题。此外,您还应该重新启动 rsyslog 服务。

请发出此命令来解决此问题。

sudo systemctl restart crond
sudo systemctl restart rsyslog 

相关内容