Die nächsten Ausführungen eines Cron-Ausdrucks berechnen
- Dashboard
- Dokumentation
- API
Was ist ein Cron-Ausdruck?
Ein Cron-Ausdruck ist eine kurze Zeichenkette, die eine zeitliche Wiederholung
beschreibt. Das aus Unix stammende Format hat fünf durch Leerzeichen getrennte Felder: Minute, Stunde,
Tag des Monats, Monat und Wochentag. Diese Syntax entstand mit dem
cron-Daemon von Brian Kernighan in den 1970er Jahren und wurde dann durch Vixie cron
(1987) verallgemeinert, das von allen modernen Linux- und macOS-Distributionen übernommen wurde. Heute findet
sich dieselbe Syntax in den meisten Cloud-Schedulern (AWS EventBridge, GCP Cloud Scheduler, Azure Logic
Apps) und CI/CD-Systemen (GitHub Actions, GitLab CI, Jenkins).
┌──── minute (0-59)
│ ┌── heure (0-23)
│ │ ┌── jour du mois (1-31)
│ │ │ ┌── mois (1-12 ou JAN-DEC)
│ │ │ │ ┌── jour de la semaine (0-7 ou SUN-SAT, 0 et 7 = dimanche)
│ │ │ │ │
* * * * *
Ein gut geformter Cron-Ausdruck definiert also einen präzisen Cron-Zeitplan: Jedes Feld kann ein fester Wert, ein Bereich, eine Liste, ein Schritt oder ein Sternchen sein, das alles matcht. Die Kompaktheit des Crontab-Ausdrucks ist seine Stärke, aber auch das, was einen Cron-Decoder unverzichtbar macht, um die Absicht visuell zu validieren. Genau das ist der Zweck dieses Cron-Konverters: eine lesbare Cron-Erklärung sowie die Liste der nächsten Ausführungen zu liefern.
Anatomie eines Cron-Ausdrucks
Die fünf Felder teilen sich eine gemeinsame Grammatik. Hier sind die akzeptierten Grenzen jeder Spalte eines Standard-Crontab-Ausdrucks:
- Minute:
0-59. - Stunde:
0-23, im 24-Stunden-Format. - Tag des Monats:
1-31. - Monat:
1-12oder die TextabkürzungenJAN,FEB,MAR,APR,MAY,JUN,JUL,AUG,SEP,OCT,NOV,DEC. - Wochentag:
0-7, wobei0und7beide Sonntag bedeuten, oder die AbkürzungenSUN,MON,TUE,WED,THU,FRI,SAT.
Sonderzeichen, die von den fünf Feldern geteilt werden:
*: any value, matcht alle erlaubten Werte des Feldes.,: diskrete Liste, zum Beispiel1,15,30im Minutenfeld.-: einschließender Bereich, zum Beispiel9-17für die Bürozeiten./: Schritt (step), zum Beispiel*/15= alle 15 Einheiten, oder0-30/5= alle 5 Minuten zwischen 0 und 30.
Quartz-Erweiterungen (Java, AWS EventBridge, Spring): Die Grammatik erweitert sich auf 6 oder 7
Felder mit einer Sekunden-Spalte am Anfang (0-59) und manchmal einer
Jahres-Spalte am Ende (1970-2099). Quartz führt auch ? (no specific
value, zur Entkopplung von Tag-des-Monats und Wochentag), L (last: letzter Tag des Monats
oder letzter Freitag mit 5L), W (nächstgelegener Werktag) und #
(N-ter Wochentag des Monats, zum Beispiel 2#3 für den 3. Montag) ein. Ein Quartz-Ausdruck
ist im Allgemeinen nicht mit einer UNIX-Crontab kompatibel und umgekehrt: Das ist die Hauptursache für
Fehler beim Kopieren eines Cron-Ausdrucks von einer Plattform zur anderen.
# UNIX / Vixie cron (5 champs)
0 9 * * 1-5
# Quartz (6 champs avec secondes)
0 0 9 ? * MON-FRI
# Quartz (7 champs avec année)
0 0 9 ? * MON-FRI 2026
Warum einen Cron-Ausdruck dekodieren?
0 0 * * * zu lesen ist schnell. */7 2-5 1,15 * 1-5 zu lesen ist deutlich weniger schnell. Wenn
ein Ausdruck über das Triviale hinausgeht, steigt das Risiko einer Fehlinterpretation und der Cron-Decode
wird zu einem eigenen Review-Schritt.
- Produktions-Debugging: verstehen, warum eine Aufgabe um 03:17 Uhr und nicht um 03:00 Uhr ausgelöst wurde, oder eine Überlappung zwischen zwei Jobs identifizieren.
- Code-Review: validieren, dass ein in einer Pull Request gepushter Scheduler wirklich das tut, was der Autor behauptet, ohne die Semantik jedes Symbols auswendig kennen zu müssen.
- Audit von Schedulern: die Cron-Jobs Linux in
/etc/crontabund/etc/cron.d/, die Jenkins-Trigger, diespec.schedulevon Kubernetes CronJobs, die AWS EventBridge-Regeln und die GCP Cloud Scheduler-Jobs überprüfen. - Legacy-Migration: eine historische
/etc/crontabohne Dokumentation übernehmen und die Aufgabenkartierung vor einer Infrastrukturänderung rekonstruieren. - Onboarding: einem neuen Entwickler ermöglichen, eine Crontab erneut zu lesen, ohne sich von einem Tag auf den anderen alle Sonderzeichen einprägen zu müssen.
So verwenden Sie den Cron-Decoder
Vorgehensweise zum Dekodieren eines Crontab-Ausdrucks mit dem Tool:
- Fügen Sie Ihren Cron-Ausdruck in das Eingabefeld ein (5 durch Leerzeichen getrennte Felder).
- Geben Sie die Anzahl der zu berechnenden nächsten Ausführungen an.
- Klicken Sie auf convert, um den Cron-Decode zu starten: Das Tool gibt einen menschlichen Satz zurück, der den Trigger erklärt, plus die datierte Liste der nächsten Ausführungen.
- Prüfen Sie visuell, dass die Daten Ihrer Absicht entsprechen (Stunde, Tag, Frequenz).
- Kopieren Sie die Ausgabe über die Kopierschaltfläche, um sie in ein Ticket, eine PR oder eine technische Dokumentation einzufügen.
Das Tool begnügt sich nicht mit einem syntaktischen Parsing: Es liefert eine Cron-Erklärung in natürlicher Sprache, was es gleichzeitig zu einem Cron-Decoder und einem Planungsvalidator macht.
Klassische Beispiele für Cron-Ausdrücke
Die folgenden Muster decken das Wesentliche der in der Produktion anzutreffenden Cron-Zeitpläne ab. Sie sind alle auf Linux crontab, Kubernetes CronJob, GitHub Actions und den meisten Anwendungs-Schedulern gültig.
| Ausdruck | Menschliche Lesart |
|---|---|
* * * * * |
Jede Minute |
0 * * * * |
Stündlich zur vollen Stunde |
0 0 * * * |
Jeden Tag um Mitternacht |
0 0 * * 0 |
Jeden Sonntag um Mitternacht |
*/15 * * * * |
Alle 15 Minuten |
0 9 * * 1-5 |
9:00 Uhr von Montag bis Freitag |
0 0 1 * * |
Am 1. jedes Monats um Mitternacht |
0 0,12 * * * |
Um Mitternacht und 12 Uhr mittags jeden Tag |
*/5 9-17 * * 1-5 |
Alle 5 Minuten während der Bürozeiten |
30 2 1,15 * * |
Am 1. und 15. des Monats um 2:30 Uhr |
Um eine Cron-Aufgabe auf einem Linux-Server auszuführen, bearbeitet man die Benutzer-Crontab aus der Shell:
# éditer la crontab de l'utilisateur courant
$ crontab -e
# lister les tâches existantes
$ crontab -l
# exemple de ligne ajoutée : sauvegarde quotidienne à 3h
0 3 * * * /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1
Beispielausgabe des Cron-Konverters für */5 * * * *:
2026-05-05 00:00:00
2026-05-05 00:05:00
2026-05-05 00:10:00
2026-05-05 00:15:00
2026-05-05 00:20:00
...
Häufige Fragen zum Cron-Decoder
Was ist der Unterschied zwischen UNIX-Cron und Quartz?
UNIX/Vixie cron verwendet 5 Felder (Minute bis Wochentag), ohne Sekundengenauigkeit, und hat keine native
Vorstellung vom "letzten Tag des Monats". Quartz (Java, Spring, AWS EventBridge) fügt eine Spalte
Sekunden am Anfang hinzu, manchmal eine Spalte Jahr am Ende, sowie mehrere Symbole
(?, L, W, #), die in der Linux-Crontab fehlen. Ein
Quartz-Cron-Ausdruck mit 6 Feldern ist daher nicht direkt nach
/etc/crontab portierbar, und umgekehrt. Unser Cron-Decoder zielt auf das 5-Feld-
Format, das die meisten Scheduler abdeckt.
Wie führt man eine Cron-Aufgabe alle 5 Minuten aus?
Mit dem Schritt / im Minutenfeld:
*/5 * * * * /usr/local/bin/check-health.sh
Dieser Crontab-Ausdruck löst das Skript zu den Minuten 0, 5, 10, 15... jeder Stunde
an allen Tagen aus. Um auf die Bürozeiten von Montag bis Freitag zu beschränken, fügen Sie Einschränkungen
in den Feldern Stunde und Wochentag hinzu: */5 9-17 * * 1-5.
Was bedeutet das Sternchen (*) in einem Cron-Ausdruck?
Das Sternchen bedeutet any value: Es matcht alle erlaubten Werte des Feldes. In
0 0 * * * bedeuten die drei Sterne "beliebiger Tag des Monats, beliebiger
Monat, beliebiger Wochentag". Kombiniert mit den ersten beiden Feldern, die auf 0 gesetzt sind, erhält
man "jeden Tag um Mitternacht". Das Sternchen kann auch mit einem Schritt kombiniert werden: */15 in
Minute = alle 15 Minuten.
Hat Crontab eine Zeitzone?
Standardmäßig die Zeitzone des Servers. Auf einer Linux-Crontab ist es die System-TZ (oft UTC auf VPS und
Containern). GitHub Actions erzwingt UTC. Kubernetes CronJob verwendet die Controller-Zeitzone,
konfigurierbar über spec.timeZone ab 1.27. AWS EventBridge wertet die Ausdrücke in
UTC aus. Anwendungs-Scheduler (Symfony Scheduler, Quartz, Airflow) erlauben oft, eine
dedizierte Zeitzone pro Aufgabe festzulegen. Im Zweifelsfall prüfen Sie date auf dem Zielserver und
vergleichen mit der Ausgabe des Cron-Konverters.
Cron-Job vs. Befehl at: was wählen?
cron dient dazu, eine wiederkehrende Aufgabe nach einem Plan auszuführen. at dient
dazu, einen Befehl einmalig zu einem bestimmten Zeitpunkt auszuführen. Für ein tägliches Backup,
eine Log-Rotation oder einen regelmäßigen API-Aufruf verwenden Sie cron. Um einen einmaligen Vorgang zu verschieben
("starte dieses Deployment heute Abend um 22 Uhr neu"), verwenden Sie at:
$ echo "/usr/local/bin/deploy.sh" | at 22:00
Wie testet man einen Cron-Ausdruck, ohne ihn auszulösen?
Genau das ist die Rolle dieses Cron-Konverters: Er berechnet die nächsten N
Ausführungen ab dem aktuellen Zeitpunkt, ohne einen Job zu starten. Sie sehen sofort, ob Ihr
Crontab-Ausdruck wie geplant um 03:00 Uhr feuert oder versehentlich um 03:17 Uhr. Um vor der
Installation der Aufgabe weiter zu gehen, können Sie auch das Skript allein testen (bash -x script.sh)
und die Syntax einer Crontab-Datei mit crontab -T fichier auf den Distributionen prüfen,
die dies unterstützen.
Was passiert, wenn Tag-des-Monats und Wochentag beide gesetzt sind?
Auf Vixie cron (Linux) ist die Regel ein logisches ODER: Der Job feuert, wenn eines oder
das andere der beiden Felder matcht. Das ist kontraintuitiv und eine Fehlerquelle. Quartz verwendet
ein UND, daher die Einführung des Symbols ?, um explizit "keine
Einschränkung" zu signalisieren. Als allgemeine Regel setzen Sie nur eines der beiden Felder.
Beispielanfrage
curl -X POST https://cdrn.fr/api/v1/tools/cron-converter/execute \
-H "Content-Type: application/json" \
-d '{"cron":"...","number_next_date":1}'
Eingabeschema
| Feld | Typ | Erforderlich | Standard |
|---|---|---|---|
cron |
string | ✓ | – |
number_next_date |
integer | ✓ | – |
Endpunkte
GET https://cdrn.fr/api/v1/tools- listet alle verfügbaren Tools aufGET https://cdrn.fr/api/v1/tools/cron-converter- liefert das Schema dieses ToolsPOST https://cdrn.fr/api/v1/tools/cron-converter/execute- führt dieses Tool mit einem JSON-Payload aus