Cron-Ausdrücke entmystifiziert: Alles zeitgesteuert planen
Sie müssen jede Nacht um 3 Uhr ein Datenbank-Backup ausführen. Oder jeden Montagmorgen einen Bericht senden. Oder alle 15 Minuten einen Cache leeren. Auf Linux- und Unix-Servern ist das Werkzeug dafür cron, und die Art, wie Sie cron mitteilen, wann etwas ausgeführt werden soll, ist ein Cron-Ausdruck.
Cron-Ausdrücke sehen auf den ersten Blick einschüchternd aus. 0 3 * * * oder */15 9-17 * * 1-5 können wie Kauderwelsch wirken, wenn man das Muster nicht kennt. Aber die Syntax ist überraschend einfach, sobald man die fünf Felder versteht.
Die fünf Felder
Jeder Standard-Cron-Ausdruck hat genau fünf Felder, getrennt durch Leerzeichen. Jedes Feld steht für eine Zeiteinheit:
┌───────────── Minute (0-59)
│ ┌───────────── Stunde (0-23)
│ │ ┌───────────── Tag des Monats (1-31)
│ │ │ ┌───────────── Monat (1-12)
│ │ │ │ ┌───────────── Wochentag (0-7, wobei 0 und 7 Sonntag sind)
│ │ │ │ │
* * * * *
Das ist alles. Fünf Felder, von links nach rechts: Minute, Stunde, Tag des Monats, Monat, Wochentag.
Wussten Sie? Der Name „cron" stammt vom griechischen Wort „chronos", das Zeit bedeutet. Der cron-Daemon (Hintergrundprozess) ist seit 1975 ein fester Bestandteil von Unix-ähnlichen Betriebssystemen.
Die Sonderzeichen
Sternchen (*) — Jeder Wert
Ein Sternchen bedeutet „jeder mögliche Wert" für dieses Feld.
* * * * * = jede Minute jeder Stunde jedes Tages.
Komma (,) — Mehrere Werte
Ein Komma trennt einzelne Werte.
0 9,12,18 * * * = zur Minute 0 der Stunden 9, 12 und 18 (9:00, 12:00 und 18:00 Uhr).
Bindestrich (-) — Wertebereich
Ein Bindestrich definiert einen Bereich.
0 9-17 * * * = zur Minute 0 jeder Stunde von 9 bis 17 (9:00 bis 17:00 Uhr, stündlich).
Schrägstrich (/) — Schrittweite
Ein Schrägstrich definiert Intervalle.
*/15 * * * * = alle 15 Minuten (Minute 0, 15, 30, 45 jeder Stunde).
0 */2 * * * = alle 2 Stunden zur Minute 0 (Mitternacht, 2:00, 4:00, ...).
Cron-Ausdrücke lesen: Übung
Gehen wir gängige Beispiele durch. Lesen Sie für jedes die fünf Felder von links nach rechts.
0 3 * * * — Täglich um 3:00 Uhr
| Feld | Wert | Bedeutung |
|---|---|---|
| Minute | 0 | Zur Minute 0 |
| Stunde | 3 | Der Stunde 3 (3:00) |
| Tag des Monats | * | Jeden Tag |
| Monat | * | Jeden Monat |
| Wochentag | * | Jeden Wochentag |
Übersetzung: „Jeden Tag um 3:00 Uhr." Die klassische Wahl für nächtliche Backups.
*/15 * * * * — Alle 15 Minuten
| Feld | Wert | Bedeutung |
|---|---|---|
| Minute | */15 | Alle 15 Minuten |
| Stunde | * | Jede Stunde |
| Tag des Monats | * | Jeden Tag |
| Monat | * | Jeden Monat |
| Wochentag | * | Jeden Tag |
Übersetzung: „Alle 15 Minuten, rund um die Uhr." Häufig für Health-Checks und Cache-Aktualisierungen.
0 9 * * 1-5 — Werktags um 9:00 Uhr
| Feld | Wert | Bedeutung |
|---|---|---|
| Minute | 0 | Zur Minute 0 |
| Stunde | 9 | Der Stunde 9 |
| Tag des Monats | * | Jeden Tag |
| Monat | * | Jeden Monat |
| Wochentag | 1-5 | Montag bis Freitag |
Übersetzung: „Um 9:00 Uhr, Montag bis Freitag." Perfekt für tägliche Arbeitsberichte.
0 0 1 * * — Erster Tag jedes Monats
| Feld | Wert | Bedeutung |
|---|---|---|
| Minute | 0 | Zur Minute 0 |
| Stunde | 0 | Der Stunde 0 (Mitternacht) |
| Tag des Monats | 1 | Am 1. |
| Monat | * | Jeden Monat |
| Wochentag | * | Beliebiger Wochentag |
Übersetzung: „Um Mitternacht am ersten Tag jedes Monats." Verwendet für monatliche Berichte, Abrechnungen oder Bereinigungen.
30 8 * * 1 — Montags um 8:30 Uhr
| Feld | Wert | Bedeutung |
|---|---|---|
| Minute | 30 | Zur Minute 30 |
| Stunde | 8 | Der Stunde 8 |
| Tag des Monats | * | Jeden Tag |
| Monat | * | Jeden Monat |
| Wochentag | 1 | Montag |
Übersetzung: „Jeden Montag um 8:30 Uhr." Ideal für wöchentliche Team-Benachrichtigungen.
Eigene Cron-Ausdrücke schreiben
Hier ist ein systematischer Ansatz:
- Beginnen Sie mit dem Zeitpunkt. „Jeden Tag um 3 Uhr" oder „alle 5 Minuten während der Geschäftszeiten."
- Füllen Sie die Felder von links nach rechts aus. Beginnen Sie mit Minute, dann Stunde, dann Tag des Monats, dann Monat, dann Wochentag.
- Verwenden Sie
*für „jeder". Wenn ein Feld egal ist, verwenden Sie*. - Testen Sie vor dem Bereitstellen. Überprüfen Sie immer, ob Ihr Ausdruck den erwarteten Zeitplan erzeugt.
Schnellreferenz gängiger Muster
| Zeitplan | Ausdruck |
|---|---|
| Jede Minute | * * * * * |
| Alle 5 Minuten | */5 * * * * |
| Jede Stunde | 0 * * * * |
| Täglich um Mitternacht | 0 0 * * * |
| Täglich um 3:00 Uhr | 0 3 * * * |
| Jeden Montag um 9:00 Uhr | 0 9 * * 1 |
| Werktags um 8:30 Uhr | 30 8 * * 1-5 |
| Erster jedes Monats | 0 0 1 * * |
| Alle 15 Min, Geschäftszeiten | */15 9-17 * * 1-5 |
| Zweimal täglich (9 und 18 Uhr) | 0 9,18 * * * |
| Jeden Sonntag um 2:00 Uhr | 0 2 * * 0 |
Häufige Fehler
Vergessen, dass Stunden von 0-23 gehen
Stunde 13 ist 13:00 Uhr, nicht Stunde 1. Ein häufiger Fehler ist, 0 1 * * * zu schreiben und zu denken, es läuft um 13:00 Uhr, obwohl es tatsächlich um 1:00 Uhr nachts läuft.
Wochentag-Verwirrung
Sonntag kann 0 oder 7 sein (beides ist gültig). Montag ist 1, Samstag ist 6. Manche erwarten, dass Montag 0 ist.
Zusammenspiel von Tag des Monats und Wochentag
Wenn Sie sowohl den Tag des Monats als auch den Wochentag angeben (keiner ist *), führen die meisten Cron-Implementierungen den Job aus, wenn eine der Bedingungen erfüllt ist, nicht wenn beide erfüllt sind. Das überrascht viele.
Warnung Der Ausdruck 0 9 15 * 1 bedeutet NICHT „um 9 Uhr am 15., aber nur wenn es ein Montag ist". Er bedeutet „um 9 Uhr am 15. jedes Monats UND um 9 Uhr an jedem Montag." Dies ist eine häufige Quelle für unerwartetes Verhalten.
Zeitzonen-Bewusstsein
Cron läuft in der lokalen Zeitzone des Servers. Wenn Ihr Server in UTC steht und Sie in Berlin sind (UTC+1 bzw. UTC+2 im Sommer), läuft ein 0 9 * * * Cron-Job um 10:00 bzw. 11:00 Uhr Ihrer Zeit. Überprüfen Sie immer die Zeitzone Ihres Servers.
Tipp Testen und visualisieren Sie Ihre Cron-Ausdrücke vor dem Bereitstellen: Cron-Ausdrücke lesen und testen. Sehen Sie die nächsten Ausführungszeiten und bestätigen Sie, dass der Zeitplan Ihren Erwartungen entspricht.
Erstellen und testen Sie Ihre Cron-Ausdrücke:
Kostenlos, sofort und ohne Registrierung.