Cron-Generator
Cron-Ausdrücke visuell erstellen und erklären.
Werte: Zahl, * (jeder), */n (jede n-te), a-b (Bereich), a,b,c (Liste)
0 9 * * 1-5
Wie ist ein Cron-Ausdruck aufgebaut?
Ein Cron-Ausdruck besteht aus fünf Feldern: Minute, Stunde, Tag des Monats, Monat und Wochentag. Jedes Feld akzeptiert eine feste Zahl, * für "jeden Wert", */n für "jede n-te Einheit", Bereiche (a-b) oder Listen (a,b,c).
Beispiel
"0 9 * * 1-5" bedeutet: jeden Werktag (Montag bis Freitag) um 9:00 Uhr – ideal für tägliche Jobs an Arbeitstagen.
Zweites Beispiel
Für einen monatlichen Datenbank-Backup-Job trägst du Minute 0, Stunde 3, Tag des Monats 1, Monat * und Wochentag * ein und erhältst "0 3 1 * *" – der Job läuft am ersten Tag jedes Monats um 3:00 Uhr nachts, wenn die Serverlast typischerweise am geringsten ist.
Wann brauchst du den Cron-Generator?
- Den crontab-Eintrag für einen nächtlichen Backup- oder Bereinigungsjob auf einem Linux-Server bauen.
- Den
schedule-Ausdruck für eine geplante Pipeline in GitHub Actions oder GitLab CI zusammenstellen. - Einen bestehenden Cron-Ausdruck aus einer fremden Konfigurationsdatei in Klartext übersetzen, um zu verstehen, wann er wirklich ausgeführt wird.
- Verschiedene Intervalle (alle 15 Minuten, stündlich, wöchentlich) durchspielen, bevor der Ausdruck in ein Deployment übernommen wird.
Gut zu wissen: Schränkst du sowohl "Tag des Monats" als auch "Wochentag" gleichzeitig auf einen konkreten Wert ein (also beide ungleich *), gilt in der klassischen Cron-Implementierung eine ODER-Verknüpfung: Der Job läuft, sobald eines der beiden Felder zutrifft – nicht nur, wenn beide gleichzeitig erfüllt sind. Das führt in der Praxis häufiger zu Überraschungen, als man erwarten würde. Beachte außerdem, dass diese fünfteilige Syntax der klassischen Unix-Cron-Notation entspricht; andere Scheduler wie systemd-Timer oder Quartz (Java) verwenden eigene, abweichende Formate, teils mit einem zusätzlichen Sekundenfeld.
Häufige Fragen
Was bedeutet das Sternchen (*)?
Es steht für "jeden Wert" in diesem Feld – z. B. bedeutet * im Monatsfeld "jeden Monat".
Wie gebe ich ein Intervall an?
Mit */n, z. B. */15 im Minutenfeld für "alle 15 Minuten" oder */2 im Stundenfeld für "alle 2 Stunden".
Zählt der Wochentag bei 0 oder 1 an?
In der klassischen Cron-Syntax steht 0 für Sonntag, 1 für Montag usw. bis 6 für Samstag – die Beschreibung unter dem Ausdruck übersetzt die eingegebenen Werte automatisch in Klartext.
Was passiert, wenn ich Tag des Monats und Wochentag gleichzeitig einschränke?
In der klassischen Cron-Syntax gilt dann eine Oder-Logik: Der Job läuft, wenn einer der beiden Werte zutrifft, nicht erst wenn beide gleichzeitig erfüllt sind – ein häufiger Stolperstein bei komplexeren Zeitplänen.
Funktioniert diese Syntax auch für systemd-Timer oder Quartz-Cron in Java?
Nein, dieses Tool erzeugt klassische fünfteilige Unix-Cron-Ausdrücke. systemd-Timer nutzen eine eigene Kalendersyntax, Quartz-Cron in Java verwendet sechs oder sieben Felder inklusive Sekunden – beide sind nicht direkt kompatibel.