SomeeLab.tools

Cron-Ausdruck lesen

Einen Cron-Ausdruck in seine fünf Felder zerlegen und sehen, wann er das nächste Mal läuft. Liest die Standardsyntax und Kürzel wie @daily.

Minute
0
Stunde
9
Tag des Monats
Beliebig
Monat
Beliebig
Wochentag
Mo-Fr

Was die fünf Felder bedeuten

Von links nach rechts: Minute, Stunde, Tag des Monats, Monat und Wochentag. 0 9 * * 1 heißt also Minute 0, Stunde 9, keine Einschränkung bei Datum und Monat, und Montag — jeden Montag um neun Uhr morgens.

Ein Sternchen bedeutet, dass das Feld nicht eingeschränkt ist. Bleibt eines der vorderen Felder offen, läuft die Aufgabe weit häufiger als beabsichtigt: * * * * * startet jede Minute. Ein versehentliches Sternchen im Minutenfeld ergibt 1440 Läufe am Tag.

Die Zeichen lesen

  • 1-5 ist die Folge der Werte von 1 bis 5.
  • 1,3,5 sind nur diese drei Werte.
  • */15 geht in Fünfzehnerschritten von null aus. Im Minutenfeld ergibt das 0, 15, 30 und 45.
  • 9-17/2 springt nur innerhalb des angegebenen Bereichs.
  • Wochentage und Monate lassen sich auch als Namen schreiben: MON-FRI, JAN,JUL.

Im Wochentagsfeld ist 0 der Sonntag und 6 der Samstag. Die meisten Implementierungen nehmen zusätzlich 7 für Sonntag an, 0 und 7 meinen also denselben Tag.

Wenn Monatstag und Wochentag zusammen stehen

Hier stolpern die meisten. Sind das dritte und das fünfte Feld beide eingeschränkt, läuft cron an allen Tagen, die eine der beiden Bedingungen erfüllen, nicht an denen, die beide erfüllen.

0 0 1 * MON heißt nicht „der Erste, sofern er auf einen Montag fällt“. Es heißt der Erste des Monats oder jeder Montag, macht also etwa fünf Läufe im Monat. Nur eines der beiden Felder einschränken und das andere als Sternchen stehen lassen, dann fällt man nicht darauf herein.

Zuerst die Zeitzone prüfen

Die hier gezeigten Zeiten richten sich nach der Zone des Geräts, auf dem gerade gelesen wird. Der cron-Dienst auf einem Server folgt dessen Zone, also vor dem Ausrollen klären, welche das ist. Server auf UTC sind verbreitet, und eine für neun Uhr morgens gedachte Aufgabe läuft dann am Nachmittag.

Wo es Sommerzeit gibt, kann eine Aufgabe in der verschobenen Stunde am Umstellungstag ausfallen oder zweimal laufen. Wer die Zeit um zwei Uhr nachts meidet, umgeht das.

Sechs Felder sind ein anderer Dialekt

Manche Ausdrücke tragen vorn ein Sekundenfeld und kommen so auf sechs. Das ist die Schreibweise von Spring und Quartz und nicht das, was ein Standard-crontab liest. Dieses Werkzeug liest nur fünf Felder.

Ein Ausdruck mit sechs Feldern verschiebt im crontab alles um eine Stelle: Der Sekundenwert wird als Minute gelesen, die Minute als Stunde. Vor dem Übernehmen also klären, welche Syntax am Ziel gilt.