fixmint
DE

Cron-Ausdruck lesen: Feld für Feld erklärt

Von · · 5 Min. Lesezeit

Ein Cron-Ausdruck ist eine kurze Textzeile, die einem Scheduler sagt, wann er einen Job ausführen soll. Die übliche Form hat fünf Felder, durch Leerzeichen getrennt: Minute, Stunde, Tag des Monats, Monat und Wochentag. Die Zeile 0 9 * * 1-5 bedeutet 09:00 Uhr, Montag bis Freitag. Jedes Feld ist eine Zahl, ein Name, eine Liste, ein Bereich oder ein Schritt, oder * für jeden Wert. Ein Job läuft zu jedem Zeitpunkt, an dem alle Felder zutreffen.

Cron-Ausdruck erklärenCron läuft zur falschen ZeitKostenlos loslegen

Die fünf Felder

FeldErlaubte WerteBeispiel
Minute0 bis 5930 ist Minute 30 der Stunde
Stunde0 bis 239 ist 09:00 Uhr, im 24-Stunden-Format
Tag des Monats1 bis 3115 ist der 15.
Monat1 bis 12 oder JAN bis DEC3 oder MAR ist März
Wochentag0 bis 6 oder SUN bis SAT0 oder SUN ist Sonntag, 1 ist Montag

Manche Systeme akzeptieren auch 7 für Sonntag, aber nicht alle. Verwende deshalb 0 oder SUN. In dieser Form hat Cron kein Sekundenfeld, der kleinste Schritt ist also eine Minute.

Listen, Bereiche, Schritte und Namen

  • steht für jeden Wert im Feld. * * * * läuft jede Minute.
  • Eine Liste nutzt Kommas. 0 9,17 * * * läuft jeden Tag um 09:00 Uhr und um 17:00 Uhr.
  • Ein Bereich nutzt einen Bindestrich. 1-5 im Wochentagsfeld bedeutet Montag bis Freitag.
  • Ein Schritt nutzt einen Schrägstrich. */15 im Minutenfeld bedeutet 0, 15, 30 und 45. 10-30/5 bedeutet 10, 15, 20, 25 und 30.
  • Namen wie MON-FRI können Zahlen ersetzen. Sie sind leichter zu lesen, wenn dein Scheduler sie akzeptiert.

Diese Teile lassen sich kombinieren. 0 8-18/2 * * * läuft zu Minute 0 jeder zweiten Stunde von 08:00 bis 18:00 Uhr.

Gängige Zeitpläne

AusdruckBedeutung
* * * * *Jede Minute
/15 * * *Alle 15 Minuten
0 * * * *Zu Minute 0 jeder Stunde
0 2 * * *Jeden Tag um 02:00 Uhr
0 9 * * 1-509:00 Uhr, Montag bis Freitag
0 9,17 * * *Jeden Tag um 09:00 und 17:00 Uhr
30 6 1 * *06:30 Uhr am 1. jedes Monats
0 0 * * 0Mitternacht jeden Sonntag
0 0 1 1 *Mitternacht am 1. Januar
/5 9-17 * 1-5Alle 5 Minuten von 09:00 bis 17:55 Uhr, Montag bis Freitag

Beachte: 0 0 * * ist Mitternacht, und 0 12 * * ist Mittag. Die falsche Stunde zu wählen ist einer der häufigsten Fehler.

Tag des Monats und Wochentag

Wenn sowohl das Feld für den Tag des Monats als auch das für den Wochentag eingeschränkt sind, läuft der Job, wenn eines der beiden zutrifft. Das ist die klassische Regel in Vixie cron und in vielen davon abgeleiteten Systemen. 0 0 13 * 5 läuft also um Mitternacht am 13. jedes Monats und außerdem jeden Freitag. Oft erwarten Leute nur Freitag, den 13., und bekommen dann mehr Läufe als geplant.

Ist eines der beiden Felder *, zählt nur das andere. Um nur an einem Freitag, dem 13., zu laufen, plane einen Job für jeden Freitag und prüfe das Datum im Skript. Andere Scheduler, auch manche Cloud-Dienste, können abweichende Regeln haben. Lies deshalb deren Dokumentation.

Zeitzonen und Sommerzeit

Cron läuft nach der Uhr der Maschine oder des Dienstes, auf dem er läuft, meist also nach der lokalen Zeitzone dieser Maschine. Ein Job, der auf 02:30 Uhr gestellt ist, läuft um 02:30 Uhr nach dieser Uhr. Prüfe zuerst die Zeitzone (unter Linux zeigt date sie an). Wenn Jobs überall nach einer einheitlichen Uhr laufen sollen, stellen viele Teams Server auf UTC um, und manche Scheduler lassen dich für jeden Job eine Zeitzone festlegen.

Die Sommerzeit stellt die Uhr zweimal im Jahr um. Im Frühjahr springen viele Orte direkt von 02:00 auf 03:00 Uhr, sodass ein Job um 02:30 Uhr keine Zeit zum Laufen hat. Im Herbst kommt die Stunde von 01:00 bis 01:59 Uhr zweimal vor. Scheduler gehen mit diesen Fällen unterschiedlich um. Manche überspringen den Job, manche führen ihn einmal aus, manche zweimal. Lege Jobs außerhalb des frühen Umstellungsfensters, oder nutze UTC, wenn dir der Unterschied wichtig ist.

Sechs Felder und Quartz

Manche Scheduler fügen vorne ein Sekundenfeld hinzu, sodass /10 * * * * alle 10 Sekunden läuft. Der Quartz-Scheduler für Java verwendet Sekunden, Minuten, Stunden, Tag des Monats, Monat, Wochentag und optional ein Jahr, und er kennt vier Sonderzeichen:

  • ? bedeutet „kein bestimmter Wert“. Quartz verlangt es entweder im Feld für den Tag des Monats oder im Feld für den Wochentag, je nachdem, welches du nicht setzt.
  • L steht für „letzte“. L im Feld für den Tag des Monats ist der letzte Tag des Monats, und 6L im Wochentagsfeld ist der letzte Freitag.
  • W steht für den nächstgelegenen Werktag. 15W ist der Werktag, der dem 15. am nächsten liegt, und es springt dabei nicht in einen anderen Monat.
  • # steht für den n-ten Wochentag. 6#3 ist der dritte Freitag.

Quartz zählt die Wochentage anders als die Form mit fünf Feldern. Seine 1 ist Sonntag und 7 ist Samstag, Montag bis Freitag ist also 2-6 und nicht 1-5. Prüfe immer, welches Format dein Scheduler verwendet, bevor du eine Zeile kopierst.

Häufige Fehler

  • */7 im Minutenfeld. Die Werte sind 0, 7, 14 und so weiter bis 56. Der nächste wäre 63, und das gibt es nicht. Der nächste Lauf nach 56 ist daher zu Minute 0 der nächsten Stunde. Der Abstand beträgt dann nur vier Minuten, und die Abstände sind ungleichmäßig. Verwende einen Schritt, der 60 ohne Rest teilt, etwa 5, 10, 15 oder 30.
  • Der 30. Februar. Ein solches Datum gibt es nicht, deshalb läuft 0 0 30 2 * nie. Dasselbe gilt für den 31. in einem Monat mit 30 Tagen. Wegen der Entweder-oder-Regel kann eine Einschränkung beim Wochentag trotzdem Läufe an anderen Tagen auslösen. Prüfe deshalb das Ergebnis.
  • Stunde 24 oder Minute 60. Diese Werte liegen außerhalb des Bereichs. Die meisten Scheduler lehnen sie beim Speichern ab, aber nicht alle.
  • Sekunden erwarten. Eine Zeile mit fünf Feldern läuft nur zu ganzen Minuten.
  • Cron mit regulären Ausdrücken verwechseln. In Cron bedeutet jeden Wert. In einem regulären Ausdruck bedeutet die Wiederholung des davorstehenden Elements. Verwende für Muster den Regex-Tester und halte Cron-Zeilen getrennt.

Die nächsten Läufe prüfen

Bevor du dich auf einen Zeitplan verlässt, lies die Zeile in einfachen Worten und notiere dir die nächsten paar Laufzeiten. Der Cron-Erklärer macht beides, und so erkennst du am schnellsten die Entweder-oder-Regel oder einen ungewöhnlichen Schritt.

Kurze Antworten

Ist das erste Feld Minuten oder Sekunden?

Minuten, in der Standardform mit fünf Feldern. Nur manche Scheduler mit sechs Feldern fügen Sekunden hinzu, und die stehen dann vorne.

Warum läuft mein Job freitags und außerdem am 13.?

Das Feld für den Tag des Monats und das für den Wochentag sind beide gesetzt, deshalb läuft der Job, wenn eines von beiden zutrifft. Setze ein Feld auf *, wenn nur das andere gelten soll.

Verwendet Cron UTC?

Nur, wenn Maschine oder Dienst auf UTC eingestellt ist. Sonst verwendet er die lokale Zeitzone dieses Systems.

Mit KI-Unterstützung aus dem Englisches Original übersetzt.

Kommentare

    Noch keine Kommentare. Schreib den ersten.

    Deine Bewertung (optional)

    Deine E-Mail wird nie angezeigt oder gespeichert.

    Cover von Agentic AI in the BrowserAgentic AI in the Browser

    Anwendungsfälle für datenschutzfreundliche KI-Workflows, die direkt im Browser laufen: dieselbe Idee, alles auf dem eigenen Gerät zu erledigen, auf der fixmint aufbaut.

    $4.99Auf Gumroad holenAuf Englisch