Sommerzeit vs cron

Aus Linupedia.org
Version vom 12. Dezember 2007, 22:06 Uhr von Robi (Diskussion | Beiträge) (hat Sommerzeit vs. cron nach Sommerzeit vs cron verschoben: Umgehung Sonderzeichenproblematik)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu: Navigation, Suche

Sommerzeit vs. cron

Autoren: des Orginalbeitrages notoxp oc2pus


Achtung 

Das hier beschriebene gilt für den mit ISC Cron V4.1 benannten cron. Zur erkennen an der Version des Cronpaketes >= 4.1.... In einigen älteren Linux (zB SuSE 9.1) ist noch ein Cron in der Version 3.... enthalten. Dieser hat auch eine andere Manpage, dessen Verhalten würde hier nicht untersucht.


Problembeschreibung

  • Bei der Umstellung von Sommer- auf Winterzeit gibt es diese Uhrzeit in der Nacht zwei mal. Oder noch besser: Wenn wieder von Winter- auf Sommerzeit umgestellt wird gibt es diese Uhrzeit überhaupt nicht.
Wie reagiert der cron-deamon darauf?


Aussagen der Manpage von cron(8)

Daylight Saving Time and other time changes

Local  time  changes  of  less  than  three hours, such as those caused by the start
or end of Daylight Saving Time, are handled specially.  This only applies to jobs that
run at a specific time and jobs that are run with a granularity greater than one hour.
Jobs that run more frequently are  scheduled normally.

If  time  has  moved  forward,  those jobs that would have run in the interval that has
been skipped will be run immediately.  
Conversely, if time has moved backward, care is taken to avoid running jobs twice.

Time changes of more than 3 hours are considered to be corrections to the clock or timezone,
and the new time is used immediately.

Das Verhalten des cron bei Zeitspüngen

Zeitsprünge über 3 Stunden 

Die aktuelle Zeit wird übernommen, für eventuelle Cronjobs die übersprungen wurden gilt uneingeschränkt die neue Zeit

Zeitsprünge kleiner 3 Stunden 

Es kommt eine spezielle Logik zu tragen

  • beim zurückstellen der Uhr werden cronjobs nicht noch einmal gestartet
  • beim vorstellen der Uhr werden übersprungene Cronjobs nachgeholt
  • dabei werden aber nur Jobs berücksichtigt die eine Startfrequenz größer als 1 Stunde haben.

Beispiele

30 2 * * * /usr/local/bin/shell.sh

  • beim Umstellen auf Winterzeit (nach alter Zeit) 02:30 gestartet
  • beim Umstellen auf Sommerzeit (nach neuer Zeit) 03:01 gestartet


15,45 2 * * * /usr/local/bin/shell.sh
 
  • beim Umstellen auf Winterzeit 4 mal gestartet jeweils nach neuer und nach alter Zeit
  • beim Umstellen auf Sommerzeit nicht gestartet


* * * * * /usr/local/bin/shell.sh
  • beim Vorstellen der Uhr um 5 Minuten fallen 5 Jobs aus also bleibt Ausführung 1/minute
  • beim Zurückstellen der Uhr um 5 Minuten kommen 5 Jobs dazu also bleibt Ausführung 1/minute


Bemerkungen

Da dieses logische Verhalten des cron nicht auf allen UNIX-Systemen vorhanden ist, gilt für die meisten Admins nach wie vor

  • für wichtige Jobs die Zeit von 01.59 Uhr bis 03.01 Uhr in Cronjobs möglichst vermeiden
  • eventuell für die Umstellung Sommer/Winterzeit eigene Logig mit restarten des cron erstellen