我想运行 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
进一步延迟的参数。在这种情况下使用shutdown
over的好处reboot
是,在延迟期间登录将被拒绝(root 除外),并且用户将收到即将重新启动的警告。
答案2
该问题是由于点击不同步引起的。
我通过使用以下命令在重新启动之前运行 cron 来解决:
/sbin/hwclock --systohc >/dev/null 2>&1
比
/usr/sbin/shutdown -r +5 >/dev/null 2>&1
作品。
如果没有提到同步时钟的命令,问题仍然存在。