为什么 Centos 7.8 上用于重新启动服务器的 crontab 一旦生成重新启动循环?

为什么 Centos 7.8 上用于重新启动服务器的 crontab 一旦生成重新启动循环?

我想运行 CronJob 每月重新启动服务器一两次。我愿意:

crontab -e

比:

51 9 5 * * /usr/sbin/reboot

这应该在每月第 5 天的 9:51 重新启动,服务器可以重新启动,但 30 秒后重新启动会继续生成无限循环。

为什么会发生这种情况以及如何解决?我必须阻止此行为的唯一方法是删除 CronJob,因此我无法设置每月一次自动重新启动。

任何帮助将不胜感激。

更新1:问题不是由cron时间太短引起的,即使我添加+5分钟或延迟重新启动仍然会发生循环。

答案1

我假设这是由于重新启动太快,即当 cron 守护程序再次出现时时间仍然是 9:51,因此触发了作业。

解决此问题的一种方法是延迟实际重新启动sleep

51 9 5 * * sleep 60 && /usr/sbin/reboot

或者,shutdown延迟使用:

51 9 5 * * /usr/sbin/shutdown -r

shutdown默认情况下将操作延迟一分钟,但您可以用作+5进一步延迟的参数。在这种情况下使用shutdownover的好处reboot是,在延迟期间登录将被拒绝(root 除外),并且用户将收到即将重新启动的警告。

答案2

该问题是由于点击不同步引起的。

我通过使用以下命令在重新启动之前运行 cron 来解决:

/sbin/hwclock --systohc >/dev/null 2>&1

/usr/sbin/shutdown -r +5 >/dev/null 2>&1

作品。

如果没有提到同步时钟的命令,问题仍然存在。

相关内容