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.