Centos

為什麼 Centos 7.8 上的 crontab 會在生成重啟循環後重啟伺服器?

  • September 21, 2020

我想每月執行一個 CronJob 來重新啟動伺服器一次或兩次。我願意:

crontab -e

比:

51 9 5 * * /usr/sbin/reboot

這應該在每月 5 天的 9:51 重新啟動,它可以在伺服器重新啟動但 30 秒後重新啟動繼續生成無限循環。

為什麼會發生這種情況以及如何解決?我必須停止這種情況的唯一方法是刪除 CronJob,因此我無法每月設置一次自動重啟。

任何幫助將不勝感激。

更新 1:問題不是由 cron 時間太短引起的,即使我添加 +5 分鐘或延遲重啟仍然循環發生。

該問題是由於點擊不同步引起的。

我通過使用以下命令在重啟之前執行一個 cron 來解決:

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

/usr/sbin/shutdown -r +5 >/dev/null 2>&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 除外),並且使用者將收到即將重新啟動的警告。

引用自:https://unix.stackexchange.com/questions/591023