Centos 7.8でサーバーを再起動するために使用されるcrontabが再起動ループを一度生成するのはなぜですか?

Centos 7.8でサーバーを再起動するために使用されるcrontabが再起動ループを一度生成するのはなぜですか?

CronJobを実行し、月に1〜2回サーバーを再起動したいと思います。私は以下が欲しい:

crontab -e

比較する:

51 9 5 * * /usr/sbin/reboot

毎月5日9時51分に再起動する必要があり、サーバーを再起動できますが、30秒後に再起動すると、無限ループが引き続き生成されます。

なぜこれが起こり、どのように解決するのですか?この動作を停止する唯一の方法は、CronJobを削除することです。そのため、月に一度自動的に再起動するように設定することはできません。

どんな助けでも大変感謝します。

アップデート1:クローン時間が短すぎて問題が発生するわけではありません。 +5分を追加したり再起動を遅らせたりしても、ループが発生し続けます。

答え1

私はこれが速すぎる再起動のためだと仮定します。つまり、cronデーモンが再起動したときの時間はまだ9時51分なので、ジョブがトリガされます。

この問題を解決する1つの方法は、実際の再起動を遅らせることですsleep

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

またはshutdown以下を使用して延期するには:

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

shutdownデフォルトでは、ジョブは1分ずつ遅延しますが、それを+5パラメータとして使用してさらに遅らせることができます。この場合、shutdownover を使用すると、reboot遅延時間の間にログインが拒否され(ルートを除く)、ユーザーに再起動が差し迫ったという警告が表示されるという利点があります。

答え2

この問題はクリックが同期されないために発生します。

以下を使用して再起動する前に、cronを実行して問題を解決しました。

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

比較する

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

働く

クロックの同期を求めるコマンドに言及がなければ問題は残ります。

関連情報