Deutsch

Entwicklertools · Crontab-Generator

Cron und Sommerzeit: Warum ein 02:30 Job überspringen oder zweimal ausgeführt werden kann

· Warum es wichtig ist

Cron Zeitzonen Sommerzeit

Ein 02:30 Uhrkandidat, der eine Lücke in der Zeitleiste einer Wanduhr überquert
Original-ToolAcre-Vektorillustration

Zweimal im Jahr springt die Uhr und ein in der Lücke oder Überlappung geplanter Cron-Job verhält sich unerwartet. In diesem Beitrag wird erläutert, was von Vixie abgeleitete Crons tun, was andere tun und wie man dies plant.

Ein fehlender Vorschaukandidat kann auftreten, wenn die ausgewählte Zone keine solche Uhrzeit hat

Eine tägliche Wanduhrzeit kann an einem Datum fehlen, an dem eine ausgewählte Zeitzone ihre Uhren vorstellt. ToolAcre stellt diesen Fall dar, indem es für die nicht vorhandene lokale Minute keinen Zeitpunkt zurückgibt und ihn in der Liste der nächsten Ausführungen überspringt. Der Ausdruck bleibt gültig; Ein Kalenderkandidat kann in dieser Zone einfach nicht in einen echten Augenblick umgewandelt werden.

Dieses Verhalten ist in `wallClockToEpoch` implementiert, das ein vorgeschlagenes lokales Datum und eine vorgeschlagene lokale Uhrzeit konvertiert, das Ergebnis wieder in derselben Zone formatiert und jede Komponente vergleicht. Eine Nichtübereinstimmung gibt null zurück. `nextRuns` ignoriert Nullkandidaten und setzt die Suche fort, wodurch verhindert wird, dass eine erfundene Zeit in der Nähe so aussieht, als ob sie genau mit dem Zeitplan übereinstimmte.

Die beiden Ereignisse – das Vorwärtsspringen, das eine Stunde entfernt, und das Zurückfallen im Herbst, das eine Stunde wiederholt

Taktänderungen erzeugen zwei konzeptionelle Fälle: eine Vorwärtslücke mit Wandzeiten, die nie auftreten, und eine Rückwärtsüberlappung, bei der einige Beschriftungen mehr als einmal vorkommen. Das Repository verfügt über Tests zum Beibehalten einer täglichen lokalen Stunde über einen Vorwärtswechsel hinweg und zum Weglassen einer nicht vorhandenen Frühlingszeit. Es enthält keine vollständige Testsuite für Überlappungsrichtlinien.

Diese Beweisgrenze ist wichtig, da Scheduler-Implementierungen unterschiedliche Entscheidungen treffen können. Dieser Artikel beschreibt den Browser-Vorschaualgorithmus, nicht das Verhalten des universellen Daemons. Bevor Sie sich während eines Taktübergangs auf eine wiederkehrende Aufgabe verlassen, lesen und testen Sie den tatsächlichen Planer auf dem Zielhost, anstatt eine Vorschau in ein Ausführungsversprechen umzuwandeln.

ToolAcre lässt nicht vorhandene Ortszeiten aus; Es modelliert nicht jede von Vixie abgeleitete Daemon-Richtlinie

In der Arbeitsmappe wurde behauptet, dass bestimmte von Vixie abgeleitete Daemons übersprungene Jobs nach einem Sprung ausführen und Duplikate unterdrücken. ToolAcre tut in seinem Vorschaucode weder das eine noch das andere: Es lässt einen Kandidaten aus, dessen lokale Komponenten keinen Roundtrip durchführen können. Es wird kein Daemon-Paket aufgerufen und es wird keine Aufholrichtlinie modelliert. Diese betrieblichen Ansprüche werden daher korrigiert und nicht wiederholt.

Das getestete Londoner Beispiel sucht nach 01:30 rund um die Änderung im März 2026. Da diese lokale Minute am Übergangsdatum nicht existiert, sind die zurückgegebenen Tage die folgenden gültigen Daten. Dies beweist das eigene Listenverhalten der Route. Es wird nicht festgestellt, was ein separat installierter Cron-Prozess mit einer bereits gespeicherten Zeile macht.

Das Wildcard-Planungsverhalten in externen Daemons liegt außerhalb des Repository-Beweises

Sterne werden vom Parser auf jeden zulässigen Wert erweitert, aber die spätere Wanduhrkonvertierung entscheidet immer noch, ob ein bestimmtes Datum/Uhrzeit einem Zeitpunkt zugeordnet wird. ToolAcre verfügt nicht über eine separate externe Daemon-Regel für „Wildcard-Jobs“. Alle Kandidaten durchlaufen denselben Kalendersuch- und Zonenkonvertierungscode.

Beschreibungen bleiben rein grammatikalisch: `* * * * *` lautet wie jede Minute, während ein abgestuftes Minutenfeld eine schrittweise Formulierung erhält. Der Satz erzählt nicht die Übergangspolitik. Verwenden Sie die Next-Run-Liste für die berechneten Beispiele des Tools und schließen Sie nicht allein aus der Prosa auf eine Nachhol-, Wiederholungs- oder Duplikatunterdrückungsgarantie.

Andere Implementierungen werden aus dieser Browservorschau nicht abgeleitet

Die Zonenimplementierung basiert auf `Intl.DateTimeFormat`-Daten, die vom Browser oder der Knotenlaufzeit bereitgestellt werden. ToolAcre validiert einen angegebenen IANA-Zonennamen, bietet die unterstützte Liste der Engine an, sofern verfügbar, und berücksichtigt UTC. BusyBox, Container-Orchestratoren oder Cloud-Cron-Produkte werden nicht überprüft.

Wenn ein anderer Planer anderer Meinung ist, behandeln Sie das als eine Dialekt- und Laufzeitfrage. Notieren Sie die Version, die Zonenkonfiguration und das beobachtete Übergangsverhalten. Die Browservorschau ist weiterhin als transparenter Vergleich nützlich, ihr Code kann jedoch nicht beantworten, welche Richtlinie ein anderer Dienst anwendet oder ob dieser Dienst verpasste Arbeit erneut versucht.

Arbeitsbeispiel: Wählen Sie eine Wandzeit und prüfen Sie die berechneten Kandidaten von ToolAcre

Eine sicherer funktionierende Methode besteht darin, die Bereitstellungszone auszuwählen, den vorgeschlagenen täglichen Ausdruck einzugeben und die Daten rund um den nächsten, dieser Umgebung bekannten Übergang zu überprüfen. Wenn ein erforderlicher Kandidat abwesend ist, wählen Sie eine andere Arbeitszeit oder eine Planerrichtlinie, die das Ziel explizit dokumentiert. Führen Sie die Vorschau erneut aus, nachdem Sie die Stunde geändert haben.

Die Quelle enthält eine Voreinstellung unter 02:30, aber eine Voreinstellung ist ein Beispiel und keine universelle Empfehlung. Seine Gültigkeit hängt vom ausgewählten Kalender und der ausgewählten Zone ab. Das Fünf-Ergebnis-Fenster von ToolAcre erstreckt sich möglicherweise nicht über einen entfernten Übergang. Wählen Sie daher in Tests einen geeigneten Startkontext, wenn Sie das Implementierungsverhalten prüfen.

Die Zonenauswahl ist Teil dieser Vorschau und wird hier nur als Werkzeugverhalten erläutert

Im Gegensatz zur Trennung der Arbeitsmappe ist die Zonenbehandlung direkt Teil der Vorschau dieses Tools. Das Panel fragt „Nächste Läufe anzeigen“ und warnt, dass die Maschine, auf der cron läuft, möglicherweise eine andere Zone als der Leser verwendet. Durch die Auswahl einer Zone werden die resultierenden Zeitpunkte geändert, während die Wanduhrfelder des Ausdrucks erhalten bleiben.

Die Auswahl konfiguriert nur die Browserberechnung. Es schreibt keine Zeitzonenanweisung, aktualisiert keinen Server und bettet die Auswahl nicht in den kopierten Ausdruck ein. Behalten Sie die vorgesehene Zone in der angrenzenden Bereitstellungsdokumentation bei und konfigurieren Sie dann den eigentlichen Scheduler mithilfe von Mechanismen, die sich für diese Umgebung bewährt haben.

Fazit: Vorschau im vorgesehenen Bereich, ohne die Liste als Ausführungsgarantie zu betrachten

Eine Next-Run-Liste ist eine Modellausgabe aus fünf Feldern, einem Startzeitpunkt, Kalenderarithmetik und Browserzonendaten. Es ist nützlich, um nicht vorhandene Zeiten und versehentliche Stundenverschiebungen zu erkennen. Es bleibt weder eine Daemon-Spur noch ein Beweis dafür, dass ein Befehl ausgeführt wurde.

Verwenden Sie die Vorschau, um riskante Wandzeiten zu identifizieren, und überprüfen Sie dann den Zielplaner an der Übergangsgrenze. Das vertretbare Versprechen von ToolAcre ist begrenzt: Tägliche Jobs bleiben zur ausgewählten lokalen Stunde, wenn diese Stunde existiert, und nicht vorhandene lokale Kandidaten werden weggelassen. Alles darüber hinaus gehört zum eingesetzten System.