Cron-Ausdrücke lesen und verstehen
Ein Cron-Ausdruck ist eine Zeichenfolge aus fünf oder sechs Feldern, die einen wiederkehrenden Zeitplan beschreibt. Sobald Sie das Muster gelernt haben, können Sie jeden Cron-Ausdruck wie normales Deutsch lesen. Dieser Leitfaden lehrt Sie, jedes Cron-Syntax-Element zu dekodieren, von einfachem * * * * * bis zu komplexen Ausdrücken mit Bereichen, Schritten und Sonderzeichen.
Die fünf Felder von Cron
Jeder Cron-Ausdruck hat fünf Zeitfelder, gefolgt vom Befehl:
┌───────── Minute (0-59)
│ ┌──────── Stunde (0-23)
│ │ ┌─────── Tag im Monat (1-31)
│ │ │ ┌────── Monat (1-12)
│ │ │ │ ┌───── Wochentag (0-7, 0 und 7 = Sonntag)
│ │ │ │ │
* * * * * <befehl>
Von links nach rechts gelesen: "Zu welcher Minute, zu welcher Stunde, an welchem Tag des Monats, in welchem Monat und an welchem Wochentag?"
Ausdrücke Schritt für Schritt lesen
Einfache Beispiele
0 9 * * *
Gelesen als: "Um Minute 0, um Stunde 9, jeden Tag des Monats, jeden Monat, jeden Wochentag." → Läuft täglich um 9:00 Uhr.
*/15 * * * *
Gelesen als: "Alle 15 Minuten jeder Stunde, jeden Tag." → Läuft alle 15 Minuten.
30 8 * * 1-5
Gelesen als: "Um Minute 30, um Stunde 8, jeden Tag des Monats, jeden Monat, Montag bis Freitag." → Läuft an Wochentagen um 8:30 Uhr.
0 0 1 * *
Gelesen als: "Um Mitternacht am ersten Tag jedes Monats." → Läuft monatlich.
Komplexe Beispiele
0 9-17/2 * * 1-5
Aufschlüsselung:
0— um Minute 09-17/2— alle 2 Stunden von 9 bis 17 (d.h. 9, 11, 13, 15, 17)*— jeden Tag des Monats*— jeden Monat1-5— Montag bis Freitag
→ Läuft um 9:00, 11:00, 13:00, 15:00 und 17:00 an Wochentagen.
30 6 1,15 * 0
Aufschlüsselung:
30— um Minute 306— um Stunde 61,15— am Tag 1 und Tag 15 des Monats*— jeden Monat0— nur am Sonntag
→ Läuft um 6:30 Uhr am 1. und 15. des Monats, jedoch nur, wenn diese Tage auch Sonntage sind.
Referenz der Sonderzeichen
* — Jeder / Alle
Entspricht jedem Wert für dieses Feld.
0 * * * * → "Jede Stunde"
* * * * * → "Jede Minute"
, — Liste / Oder
Trennt mehrere Werte.
0 9,12,15 * * * → "Um 9 Uhr, 12 Uhr und 15 Uhr"
- — Bereich
Definiert einen inklusiven Wertebereich.
0 9-17 * * * → "Jede Stunde von 9 bis 17 Uhr"
30 8 * * 1-5 → "Wochentags um 8:30 Uhr"
/ — Schritt
Teilt das Feld in Inkremente auf.
*/15 * * * * → "Alle 15 Minuten"
0 */2 * * * → "Alle 2 Stunden"
0 0 */3 * * → "Alle 3 Tage"
Schritte können mit Bereichen kombiniert werden:
0 9-17/2 * * * → "Alle 2 Stunden von 9 bis 17 Uhr"
30 */4 * * 1-5 → "Alle 4 Stunden an Wochentagen, um Minute 30"
L — Letzter (einige Systeme)
In einigen Cron-Implementierungen (wie Quartz) bedeutet L "letzter."
0 0 L * * → "Letzter Tag jedes Monats"
# — N-tes Vorkommen (einige Systeme)
0 9 * * 1#1 → "Erster Montag jedes Monats um 9 Uhr"
Häufige Ausdrücke dekodiert
| Ausdruck | Lesbar | Beschreibung |
|---|---|---|
* * * * * |
Jede Minute | |
*/5 * * * * |
Alle 5 Minuten | |
0 * * * * |
Um Minute 0 jeder Stunde | Stündlich |
0 */2 * * * |
Alle 2 Stunden | |
0 9 * * * |
Jeden Tag um 9 Uhr | Täglich |
0 9,17 * * * |
Jeden Tag um 9 und 17 Uhr | |
0 9 * * 1-5 |
Wochentags um 9 Uhr | |
30 8 * * 1 |
Montags um 8:30 Uhr | |
0 0 1 * * |
Erster jedes Monats | Monatlich |
0 0 1 1 * |
1. Januar um Mitternacht | Jährlich |
*/15 9-17 * * 1-5 |
Alle 15 Min während der Geschäftszeit an Wochentagen | |
0 0 * * 0 |
Jeden Sonntag um Mitternacht | Wöchentlich |
0 0 */2 * * |
Jeden zweiten Tag um Mitternacht | |
0 22 * * 5 |
Jeden Freitag um 22 Uhr |
Sechs-Felder-Cron (mit Sekunden)
Einige Cron-Implementierungen (wie Quartz Scheduler) verwenden sechs Felder und fügen Sekunden am Anfang hinzu:
┌───────── Sekunde (0-59)
│ ┌──────── Minute (0-59)
│ │ ┌─────── Stunde (0-23)
│ │ │ ┌────── Tag im Monat (1-31)
│ │ │ │ ┌───── Monat (1-12)
│ │ │ │ │ ┌──── Wochentag (0-7)
│ │ │ │ │ │
* * * * * * <befehl>
0 */5 * * * * → "Alle 5 Minuten, bei Sekunde 0"
0 0 9 * * * → "Jeden Tag um 9:00:00 Uhr"
Nicht standardisierte Kurzformen
Viele Cron-Implementierungen unterstützen diese Aliase:
@yearly → 0 0 1 1 * → "Einmal im Jahr"
@monthly → 0 0 1 * * → "Einmal im Monat"
@weekly → 0 0 * * 0 → "Einmal pro Woche"
@daily → 0 0 * * * → "Einmal pro Tag"
@hourly → 0 * * * * → "Einmal pro Stunde"
@reboot → (keine Zeit) → "Beim Start ausführen"
Cron in lesbaren Text übersetzen
Wenn Sie einen unbekannten Cron-Ausdruck sehen, dekodieren Sie ihn Feld für Feld:
Ausdruck: 45 17 1,15 * 1-5
| Feld | Wert | Bedeutung |
|---|---|---|
| Minute | 45 | Um Minute 45 |
| Stunde | 17 | Um 17 Uhr |
| Tag im Monat | 1,15 | Am 1. und 15. |
| Monat | * | Jeden Monat |
| Wochentag | 1-5 | Montag bis Freitag |
Ergebnis: "Um 17:45 Uhr am 1. und 15. jedes Monats, nur wenn diese Tage Wochentage sind."
Ausdruck: 0 0 * * 0
| Feld | Wert | Bedeutung |
|---|---|---|
| Minute | 0 | Um Mitternacht |
| Stunde | 0 | Um 0 Uhr (Mitternacht) |
| Tag im Monat | * | Jeden Tag |
| Monat | * | Jeden Monat |
| Wochentag | 0 | Sonntag |
Ergebnis: "Jeden Sonntag um Mitternacht."
Häufige Fallstricke beim Lesen von Cron
Fallstrick 1: * in Wochentag UND Tag-im-Monat bedeutet, dass beide zutreffen
Wenn sowohl Tag-im-Monat als auch Wochentag * sind, wird der Ausdruck an jedem Tag ausgeführt. Aber wenn beide spezifische Werte haben, wird der Job ausgeführt, wenn ENTWEDER zutrifft – es ist eine ODER-Bedingung.
0 9 15 * 1
Dies läuft um 9 Uhr am 15. des Monats UND an jedem Montag (nicht "der 15. UND Montag"). Um nur auszuführen, wenn beide zutreffen, benötigen Sie zwei separate Crontab-Einträge oder eine Skriptlogik.
Fallstrick 2: Cron verwendet Ortszeit, nicht UTC
Cron verwendet die lokale Systemzeit. Auf Servern, die auf UTC eingestellt sind, läuft 0 9 * * * um 9 Uhr UTC. Überprüfen Sie immer die Server-Zeitzone, bevor Sie Zeitpläne festlegen.
Fallstrick 3: 0 und 7 sind beide Sonntag
Im Wochentagsfeld repräsentieren sowohl 0 als auch 7 den Sonntag. Dies ist ein Erbe aus frühen Unix-Implementierungen.
Online-Tool
Das Tool Cron Expression Parser auf Help2Code dekodiert jeden Cron-Ausdruck in eine menschenlesbare Beschreibung. Fügen Sie einen Ausdruck wie */15 9-17 * * 1-5 ein und sehen Sie eine feldbezogene Aufschlüsselung, nächste Ausführungszeiten und eine Erklärung in einfachem Deutsch. Erstellen Sie neue Ausdrücke mit dem Tool Cron Job Command Generator.
Fazit
Das Lesen von Cron-Ausdrücken ist eine Fähigkeit, die mit Übung zur Selbstverständlichkeit wird. Merken Sie sich die fünf Felder: Minute, Stunde, Tag-im-Monat, Monat, Wochentag. Verwenden Sie den Platzhalter * für "jeden", Bereiche mit - für Spannen, Schritte mit / für Intervalle und Listen mit , für spezifische Werte. Dekodieren Sie jeden unbekannten Ausdruck Feld für Feld und verwenden Sie das Tool Cron Expression Parser, um Ihr Verständnis zu überprüfen.