Was könnte dazu führen, dass ein Cron zweimal gleichzeitig ausgeführt wird?

Was könnte dazu führen, dass ein Cron zweimal gleichzeitig ausgeführt wird?

Ich habe einen Cron, der so eingerichtet ist, dass er jeden Montag um 1 Uhr morgens ausgeführt wird

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

Nachdem es zwei Jahre lang wie erwartet lief, lief es am 18. Juni zweimal, wobei der zweite Anruf ½ - 1 Sekunde nach dem ersten erfolgte. Was könnte die Ursache dafür sein?

Weder beim ersten noch beim zweiten Mal wurde es von einem Menschen betrieben.

Das Skript ist mit einer Website verknüpft, befindet sich jedoch außerhalb des Dokumentstamms.

Ist es möglich, dass die Uhr im selben Moment synchronisiert wurde, indem sie um eine Sekunde zurückgestellt und der Cron um 1 Uhr morgens erneut ausgeführt wurde?

Antwort1

Es könnte sein, dass Jippie doch etwas auf der Spur ist: Während die Schaltsekunde tatsächlich am 1. Juli eingeführt wurde, gibt es derzeitein Fehler in einigen GPS-Zeitsystemen(bitte lesen Sie den gesamten Thread), wodurch Schaltsekunden kontinuierlich angekündigt werden. Mit anderen Worten, das Schaltsekunden-Flag wurde seit dem 30. Juni jeden Tag von vielen hochrangigen Zeitquellen angekündigt. Es wird gerade behoben, siehe erneut den E-Mail-Thread mit NTP-Fragen. Zahlreiche Systeme waren am 31. Juli/1. August deswegen betroffen.so wieam 30. Juni (Linux-Kernel stürzt ab) / 1. Juli (Java-CPU-Probleme).

Das Seltsame ist, dass es am 18. Juni passiert ist. Gab es in Ihrem Kernel-Protokoll etwa zur gleichen Zeit eine Meldung „Schaltsekunde eingefügt“? Befindet sich Ihr Server derzeit in UTC+1 (BST)? Wenn Sie im Kernel-Protokoll eine Schaltsekunde-Meldung sehen, welche ntpd-Version und Kernel-Version verwenden Sie? In allen ntpd-Versionen, die ich kenne, wird die Schaltsekunde immer nur am letzten Tag des Monats an den Kernel weitergegeben, daher könnte die gesamte Schaltsekunden-Theorie hier eine falsche Fährte sein.

Antwort2

Meine Antwort unten muss seinfalsch, ich habe das Datum verwechselt: Die letzte Schaltsekunde wurde am 30. Juni 2012 um 23:59:60 UTC eingefügt. Nicht am 18. Juni.


Die Schaltsekunde, die an diesem Tag eingeführt wurde.

Schaltsekunden sind nicht so vorhersehbar wie Schaltjahre, sie werden normalerweise durch große Erdbeben, Tsunamis usw. verursacht. Wo eine SchaltsekundeJahrist einigermaßen vorhersehbar (etwa alle vier Jahre) eine Schaltsekunde istnicht. Es gibt eine Kommission kluger Köpfe (ich glaube bei der UNO), die beschließt, eine Schaltsekunde einzuführen. Das kann man nur etwa 60 Tage im Voraus vorhersagen. Viele Systeme mögen es nicht, wenn die Zeit von ...:59 auf ...:60 geht, bevor sie auf ...:00 springt. Datenbanken mögen es nicht, wenn die Zeit um eine Sekunde zurückgestellt wird, sie sind sehr pingelig, wenn Zeitstempel nur einmal vorkommen.

https://en.wikipedia.org/wiki/Schaltsekunde#Ankündigung_von_Schaltsekunden

Antwort3

Ich habe auch einen doppelt laufenden Cron bekommen. Zwei gleichzeitige Skripte, die Fehlermeldungen lesen und löschen. Ich bin immer wieder zu diesem Thread zurückgekehrt, um zu sehen, ob jemand etwas Neues gefunden hat!

Aber mir ist gerade aufgefallen, dass es sich um einen doppelten Eintrag von cron handelte. Ich hatte einen Eintrag in /etc/crontab, um alle Skripte in /etc/cron.quarter auszuführen, und ich hatte einen Eintrag in /etc/cron.d, der gleichzeitig dasselbe Skript aufrief.

Nicht ganz so intellektuell anspruchsvoll wie das Debuggen von Schaltsekundenproblemen!

verwandte Informationen