Was passiert mit Cronjobs bei der Zeitumstellung?

An den beiden Tagen der Zeitumstellung kann die für einen Cronjob geplante Stunde fehlen oder doppelt vorkommen, je nachdem, ob der Job auf eine lokale Uhrzeit oder auf einen festen Abstand geplant ist. Bei einem lokal-zeitbasiert geplanten Job wie 30 2 * * * überspringt die Uhr im Frühjahr die geplante Zeit oder durchläuft sie im Herbst zweimal. Ein Job, der stattdessen mit festem UTC-Abstand oder einfach alle 24 Stunden läuft, kennt dieses Problem nicht, verschiebt sich dafür lokal betrachtet zeitweise um eine Stunde.

Frühjahr - wenn die geplante Stunde fehlt

Beim Sprung von der Winter- in die Sommerzeit überspringt die lokale Uhr eine Stunde, meist mitten in der Nacht: Aus 2:00 Uhr wird direkt 3:00 Uhr. Ein Job, der für 2:30 Uhr geplant ist, trifft an diesem Tag lokal auf keinen gültigen Zeitpunkt - diese halbe Stunde existiert an diesem Tag schlicht nicht. Was dann passiert, hängt vom eingesetzten Scheduler ab: Manche Implementierungen lassen den Lauf für diesen Tag ausfallen, andere holen ihn direkt nach dem Sprung nach oder verschieben ihn auf die nächste gültige Zeit. Ein allgemeingültiges „richtiges” Verhalten gibt es dafür nicht - das regelt die jeweilige Cron-Implementierung oder der Scheduler-Dienst.

Herbst - wenn die geplante Stunde doppelt vorkommt

Beim Rücksprung von der Sommer- in die Winterzeit läuft die Stunde zwischen 2:00 und 3:00 Uhr lokal zweimal ab. Ein Job für 2:30 Uhr trifft an diesem Tag also auf zwei Momente, die beide als lokale 2:30 Uhr erscheinen. Auch hier entscheidet der Scheduler, was passiert: Er kann den Job bei beiden Durchläufen starten, nur beim ersten oder nur beim zweiten. Wem wichtig ist, ob ein bestimmter Job an diesem Tag ein- oder zweimal läuft, sollte das Verhalten der eigenen Umgebung gezielt prüfen statt es anzunehmen.

Warum lokal geplante Jobs anders betroffen sind als UTC-Jobs

Der Unterschied liegt darin, wonach der Job seine Ausführungszeit bestimmt. Ein Cron-Ausdruck wie 30 2 * * * beschreibt nur eine Uhrzeit, keine Zeitzone - ob diese Uhrzeit lokal oder in UTC gilt, entscheidet die Laufzeitumgebung (Details dazu in der FAQ Läuft mein Cronjob in UTC oder Lokalzeit?). Läuft die Umgebung in einer Zeitzone mit Sommerzeit, trifft die geplante Stunde genau an den beiden Umstellungstagen auf das Fehl- beziehungsweise Doppel-Problem. Ein Job mit festem UTC-Abstand hat dieses Problem nicht, weil UTC keine Zeitumstellung kennt - er läuft dafür für ein halbes Jahr lokal betrachtet eine Stunde früher oder später als in der übrigen Zeit, weil sich die lokale Zeitzone relativ zu UTC verschiebt.

Weiterrechnen

Ob ein eigener Ausdruck lokal-zeitbasiert oder mit festem UTC-Abstand ausgewertet wird, klärt die FAQ Läuft mein Cronjob in UTC oder Lokalzeit?. Einen konkreten Ausdruck übersetzt der Cron-Ausdruck-Rechner Feld für Feld in Klartext. Wie Zeitpunkt, UTC und lokale Anzeige allgemein zusammenhängen, erklärt der Praxisleitfaden Zeitstempel und Zeitzonen in der Praxis.

Quellen