Zum Inhalt springen

Cron-Ausdrücke erklärt

Übersetzt einen Cron-Ausdruck in einen Satz und zeigt bis zu 20 nächste Ausführungszeiten in der gewählten Zeitzone. Liest 5 Felder und 6 Felder mit Sekunden.

5 Felder

Beschreibung

Um 09:00, Montag bis Freitag

Nächste Ausführungszeiten

Zeitzone des Browsers: UTC

Gib einen gültigen Ausdruck ein, um die nächsten Ausführungszeiten zu sehen.

Felder & Spickzettel

Felder & Spickzettel
FeldBedeutungWerte
SekundeSekunde (nur bei 6 Feldern)0–59
MinuteMinute0–59
StundeStunde0–23
Tag des MonatsTag des Monats1–31
MonatMonat1–12 oder JAN–DEC
WochentagWochentag0–7 (0 und 7 bedeuten beide Sonntag) oder SUN–SAT

Quartz-spezifische Zeichen (L, W, #, ?) werden hier nicht unterstützt — nur die Standardsyntax mit 5 oder 6 Feldern.

Gängige Makros

Beispiele

Deine Eingaben werden nur in diesem Browser verarbeitet und nie an einen Server gesendet. So funktioniert es

0 9 * * * bedeutet täglich 09:00 in der gewählten Zeitzone

Gibst du */15 9-17 * * 1-5 ein, bekommst du den Satz „Alle 15 Minuten, zwischen 09:00 und 17:59, Montag bis Freitag“ und darunter der Reihe nach die Tage und Uhrzeiten, zu denen der Job tatsächlich laufen würde. So prüfst du, ob ein Ausdruck das bedeutet, was du meinst, bevor du ihn auf dem Server einträgst.

So benutzt du das Tool

  1. Trag deinen Ausdruck ins Feld Cron-Ausdruck ein. Am Anfang steht dort 0 9 * * 1-5. Die Angabe unter dem Feld verrät, ob er als „5 Felder“ oder als „6 Felder (Sekunden zuerst)“ gelesen wurde.
  2. Unter Beschreibung steht der Ausdruck als ausformulierter Satz. „Ausdruck kopieren“ kopiert den bereinigten Ausdruck. Hast du ein Makro eingegeben, wird die in Felder aufgelöste Form kopiert (z. B. @daily → 0 0 * * *).
  3. Unter Nächste Ausführungszeiten legst du „Anzahl“ (1–20) und „Zeitzone“ fest. Aufgelistet werden die Ausführungen ab jetzt, mit Datum und Uhrzeit in dieser Zeitzone.
  4. Unter Felder & Spickzettel findest du „Gängige Makros“ und „Beispiele“. Ein Klick auf einen der Buttons setzt den Ausdruck ins Eingabefeld.

Bei einem Syntaxfehler erfährst du, welcher Wert in welchem Feld nicht passt. Auf 60 * * * * folgt zum Beispiel die Meldung: „60“ im Feld Minute liegt außerhalb des zulässigen Bereichs.

Die Syntax der Felder

Die Felder sind durch Leerzeichen getrennt, und es müssen 5 oder 6 sein. Bei 5 Feldern lautet die Reihenfolge Minute, Stunde, Tag des Monats, Monat, Wochentag. Bei 6 Feldern gilt das erste als Sekunde.

Feld Werte
Sekunde (nur bei 6 Feldern) 0–59
Minute 0–59
Stunde 0–23
Tag des Monats 1–31
Monat 1–12 oder JAN–DEC
Wochentag 0–7 (0 und 7 bedeuten beide Sonntag) oder SUN–SAT

In jedem Feld sind diese Schreibweisen möglich:

  • *: jeder Wert
  • 5: genau dieser Wert
  • 1-5: ein Bereich. Liegt der Anfang hinter dem Ende (5-1), ist das ein Fehler
  • */15: ein Schritt. Im Minutenfeld sind das die Minuten 0, 15, 30 und 45
  • 5/15: ein Schritt mit Startwert. Im Minutenfeld heißt das ab Minute 5 alle 15 Minuten (5, 20, 35, 50)
  • 10-40/10: ein Schritt innerhalb eines Bereichs. Im Minutenfeld sind das die Minuten 10, 20, 30 und 40
  • 1,15: eine Liste, getrennt durch Kommas. Die Schreibweisen oben lassen sich darin mischen

Das Tool kennt sieben Makros. @yearly und @annually stehen für 0 0 1 1 *, @monthly für 0 0 1 * *, @weekly für 0 0 * * 0, @daily und @midnight für 0 0 * * *, @hourly für 0 * * * *. @reboot bedeutet „einmal beim Systemstart ausführen“. Dafür gibt es keine Uhrzeit, die sich berechnen ließe, und deshalb wird es nicht gelesen.

Tag des Monats und Wochentag zugleich angeben

Steht in beiden Feldern etwas anderes als *, läuft der Job nicht an Tagen, auf die beides zutrifft, sondern an allen Tagen, auf die mindestens eines von beiden zutrifft. So legt es das crontab-Handbuch für Unix cron fest, und so berechnet auch dieses Tool die nächsten Ausführungszeiten.

0 0 13 * 5 bedeutet deshalb nicht „Freitag, der 13.“. Mit der Zeitzone UTC und dem 10. Oktober 2026 als heutigem Tag kommen der Reihe nach der 13. Oktober (Dienstag), der 16. Oktober (Freitag) und der 23. Oktober (Freitag) heraus. Der Job läuft an jedem 13., egal auf welchen Wochentag er fällt, und an jedem Freitag, egal welches Datum er hat.

Als Beschreibung liefert das Tool für diesen Ausdruck „Um 00:00, an Tag 13 des Monats, und jeden Freitag“. Das kann so klingen, als müssten beide Bedingungen gleichzeitig gelten. Deshalb steht bei solchen Ausdrücken unter der Beschreibung ein Hinweis, dass der Job an allen Tagen läuft, auf die mindestens eines von beiden zutrifft. Die tatsächlichen Termine siehst du in der Liste der nächsten Ausführungszeiten.

Zeitzonen mit Sommerzeit

Wählst du eine Zeitzone mit Zeitumstellung, weichen die Ausführungszeiten an den Umstellungstagen vom Gewohnten ab. Die folgenden Ergebnisse gelten für America/New_York im Jahr 2026.

  1. Eine Uhrzeit, die es am Tag der Umstellung auf Sommerzeit nicht gibt: Am 8. März springt die Uhr von 2 auf 3 Uhr, die Stunde ab 2 Uhr fällt aus. 30 2 * * * (täglich um 2:30 Uhr) erscheint nur an diesem Tag als 03:30:00 und ab dem nächsten Tag wieder als 02:30:00. Die Ausführung wird also nicht übersprungen, sondern eine Stunde später angezeigt.
  2. Eine Uhrzeit, die es am Tag der Rückstellung zweimal gibt: Am 1. November kommt die Stunde ab 1 Uhr doppelt vor. Ein Ausdruck mit fester Stunde wie 30 1 * * * erscheint an diesem Tag nur einmal mit 01:30:00. Ein Ausdruck mit * im Stundenfeld wie 0 * * * * zeigt 01:00:00 dagegen zweimal.

Wie ein echter Scheduler mit solchen Uhrzeiten umgeht, ist von Programm zu Programm verschieden. Hast du Jobs, die zwischen 1 und 3 Uhr laufen, lies auch die Dokumentation des cron auf deinem Server.

Quellen

Häufige Fragen

Läuft ein Job mit */7 wirklich genau alle 7 Minuten, obwohl 60 nicht durch 7 teilbar ist?

Nein. Gezählt wird in jeder Stunde neu ab Minute 0. Die nächsten Ausführungszeiten von */7 * * * * zeigen es: Der Job läuft in den Minuten 0, 7, 14, …, 49, 56 und danach wieder in Minute 0 der nächsten Stunde. Zwischen Minute 56 und Minute 0 liegen nur 4 Minuten. Schritte in den Feldern Stunde, Tag des Monats und Monat beginnen genauso am Anfang ihres Bereichs von vorn.

Ich habe 0 0 30 2 * eingegeben, und da steht „Dieses Datum gibt es im Kalender nicht, der Job würde also nie laufen.“

Dann ist die Syntax in Ordnung, aber das Datum gibt es nicht. Bei 0 0 30 2 * liegt jeder Wert im erlaubten Bereich, einen 30. Februar gibt es aber nicht, und damit auch keinen Tag, an dem der Job laufen könnte. Das Tool meldet das als Fehler und zeigt weder Beschreibung noch Ausführungszeiten. Ein Datum, das es nur in manchen Monaten gibt, etwa 0 0 31 * *, macht keine Probleme: Aufgelistet werden einfach nur die Monate mit 31 Tagen.

Kann ich Wochentage als MONDAY oder in einer anderen Sprache als Englisch schreiben?

Nein. Gelesen werden nur die englischen Kürzel mit drei Buchstaben (SUN–SAT, JAN–DEC), Groß- und Kleinschreibung ist dabei egal. Auf MONDAY antwortet das Tool mit der Meldung: „MONDAY“ im Feld Wochentag ist kein gültiger Wert. Die Kürzel funktionieren auch in Bereichen wie MON-FRI und in Listen wie mon,wed. Monatsnamen gelten allerdings nur im Monatsfeld, Wochentagsnamen nur im Wochentagsfeld.

Mein Server läuft in UTC, mein Browser in einer anderen Zeitzone. Welche Zeitzone stelle ich ein?

Die des Servers, auf dem cron tatsächlich läuft. Rechnest du 0 9 * * 1-5 mit „UTC“, steht in der Liste 09:00:00. In einer Zeitzone, die UTC neun Stunden voraus ist (UTC+9), ist dieser Moment 18 Uhr. Stellst du auf eine UTC+9-Zeitzone um, steht in der Liste genauso 09:00:00, dieser Moment ist in UTC aber 0 Uhr am selben Tag. Die Liste zeigt immer die Uhrzeit der gewählten Zeitzone. Beim ersten Öffnen ist die Zone ausgewählt, die neben „Zeitzone des Browsers“ steht.

Kann ich einen Cron-Ausdruck aus Quartz oder AWS unverändert eingeben?

„Cron-Ausdruck“ heißt es überall, die Syntax ist aber von System zu System verschieden. Dieses Tool liest nur die 5 Felder von Unix cron und die Form mit 6 Feldern, bei der Sekunden davorstehen. • Unix cron (crontab): 5 Felder, nämlich Minute, Stunde, Tag des Monats, Monat, Wochentag. Der Wochentag reicht von 0 bis 7, wobei 0 und 7 beide Sonntag bedeuten. • Quartz (Scheduler für Java): Vorn stehen Sekunden, hinten darf ein Jahr folgen, also 6 bis 7 Felder. Der Wochentag reicht von 1 bis 7, und 1 ist der Sonntag. Gegenüber Unix cron ist damit jede Zahl um eins verschoben. Dazu kommen Zeichen, die Unix cron nicht kennt: L (der letzte Tag des Monats oder der Woche), W (der nächstgelegene Tag von Montag bis Freitag), # (6#3 ist der dritte Freitag) und ? (für dasjenige der beiden Felder Tag und Wochentag, das offenbleiben soll). • AWS EventBridge: 6 Felder, nämlich Minute, Stunde, Tag des Monats, Monat, Wochentag, Jahr. Sekunden gibt es nicht, dafür am Ende das Jahr. Der Wochentag ist 1 bis 7 oder SUN bis SAT, und in einem der beiden Felder Tag und Wochentag muss zwingend ein ? stehen. L, W und # gibt es auch hier. • Andere Cloud-Scheduler: Auch bei Diensten wie Google Cloud Scheduler, deren Syntax Unix cron ähnelt, können Einzelheiten abweichen. Fügst du einen Ausdruck aus einem anderen System unverändert ein, gibt es einen Fehler, oder er wird anders gelesen. Das Beispiel 0 10 * * ? * aus der AWS-Dokumentation (täglich um 10 Uhr) hat 6 Felder. Dieses Tool hält deshalb das erste für die Sekunde, nimmt das ? an fünfter Stelle als Wert des Monatsfelds und meldet: „?“ im Feld Monat ist kein gültiger Wert. Ausdrücke für Quartz oder AWS prüfst du besser in der Dokumentation oder der Konsole des jeweiligen Dienstes.

Verwendete Open-Source-Software: cronstrue (MIT), cron-parser (MIT), Luxon (MIT)

Zuletzt aktualisiert: