cron が同時に 2 回実行される原因は何でしょうか?

cron が同時に 2 回実行される原因は何でしょうか?

毎週月曜日の午前1時に実行されるように設定されたcronがあります

0 1 * * 1 /script/dir/script >> /script/dir/file.log

予想どおりに 2 年間実行された後、6 月 18 日に 2 回実行され、2 回目の呼び出しは最初の呼び出しの 0.5 ~ 1 秒後に発生しました。このような状況が発生する原因は何でしょうか。

1回目も2回目も人間が実行したものではありません。

スクリプトは Web サイトに関連付けられていますが、ドキュメント ルートの外部にあります。

同じ瞬間に時計が同期され、強制的に 1 秒戻されて、午前 1 時に cron が再実行される可能性はありますか?

答え1

結局、ジッピーは何かに気付いているのかもしれない。うるう秒は確かに7月1日に挿入されたが、現在一部のGPS時間システムのバグ(スレッド全体をお読みください)、これにより、うるう秒が継続的に発表されます。言い換えると、うるう秒フラグは、6 月 30 日以来毎日、多くのトップランクの時刻ソースから発表されています。これは現在修正中です。NTP の質問メール スレッドを参照してください。このため、7 月 31 日と 8 月 1 日に多数のシステムが影響を受けました。と同じように6月30日(Linuxカーネルクラッシュ)/7月1日(Java CPUの問題)。

奇妙なことに、これは 6 月 18 日に発生しました。カーネル ログには、同じ頃に「うるう秒が挿入されました」というメッセージはありましたか? サーバーは現在 UTC+1 (BST) になっていますか? カーネル ログにうるう秒のメッセージが表示された場合、実行している ntpd のバージョンとカーネルのバージョンはどれですか? 私が使用したすべての ntpd バージョンでは、うるう秒は月末にのみカーネルに伝播されるため、うるう秒の理論全体がここでは誤解を招く可能性があります。

答え2

私の答えは間違っている日付を間違えました。最新のうるう秒は、2012 年 6 月 30 日 23:59:60 UTC に挿入されました。6 月 18 日ではありません。


その日に導入されたうるう秒。

うるう秒はうるう年ほど予測できませんが、通常は大地震や津波などが原因で発生します。うるう秒は(約4年ごとに)予測可能です。ない. 聡明な人々 (国連だと思います) の委員会が、うるう秒を導入すべきだと決定しました。これは約 60 日前にしか予測できません。多くのシステムでは、時間が ...:59 から ...:60 になってから ...:00 になるのは好ましくありません。データベースでは、時間が 1 秒戻されることは好ましくなく、タイムスタンプが 1 回だけ発生することに非常にこだわります。

https://en.wikipedia.org/wiki/Leap_second#うるう秒の発表

答え3

私も二重に実行される cron を取得しています。2 つのスクリプトが同時にエラー メッセージを読み取って削除しています。誰かが何か新しいことを発見していないか確認するために、このスレッドに戻ってきました。

しかし、cron のエントリが重複していることに気付きました。/etc/crontab に /etc/cron.quarter 内のすべてのスクリプトを実行するエントリがあり、/etc/cron.d にも同じスクリプトを同時に呼び出すエントリがありました。

うるう秒の問題をデバッグするほど知的に厳密ではありません。

関連情報