Cron-Ausdruck-Parser

Cron-Ausdrücke definieren Zeitpläne für wiederkehrende Aufgaben in Unix-ähnlichen Systemen. Dieses Tool parst Cron-Syntax (5-7 Felder), erklärt jedes Feld in verständlicher Sprache, berechnet die nächsten geplanten Ausführungszeiten und warnt vor häufigen Fehlern. Unterstützt sowohl das Benutzer-Crontab-Format als auch das System-Crontab-Format mit Benutzer- und Befehlsfeldern.

Spezifikationen

Haeufige Anwendungsfaelle

  • Debuggen, warum ein Cron-Job nicht zu den erwarteten Zeiten läuft
  • Geerbte Cron-Ausdrücke in Konfigurationen verstehen
  • Backup- und Wartungszeitpläne planen
  • CI/CD-Pipeline-Zeitpläne überprüfen (GitHub Actions, GitLab CI)
  • Kubernetes-CronJob-Zeitpläne vor der Bereitstellung testen
  • System-Crontab-Einträge aus /etc/crontab oder /etc/cron.d/ analysieren

Funktionen

  • 5-Feld- (Standard), 6-Feld- (mit Sekunden) und 7-Feld-Cron-Ausdrücke (mit Sekunden und Jahr) parsen
  • System-Crontab-Format mit Benutzerfeld unterstützen (z.B. "0 5 * * * root /path/to/script")
  • Befehl aus Cron-Zeilen extrahieren und anzeigen
  • Jedes Feld in menschenlesbarer Sprache erklären
  • Nächste 10 geplante Ausführungszeiten berechnen
  • Unterstützung für Bereiche (1-5), Listen (1,3,5), Schritte (*/15) und Namen (MON, JAN)
  • Warnung bei häufigen Problemen wie der Angabe von Tag 31 in einem Zeitplan

Beispiele

Jeden Wochentag um 9 Uhr

Ausprobieren →

Läuft um 9:00 Uhr Montag bis Freitag.

0 9 * * 1-5

Alle 15 Minuten

Ausprobieren →

Läuft zu den Minuten 0, 15, 30 und 45 jeder Stunde.

*/15 * * * *

System-Crontab mit Benutzer und Befehl

Ausprobieren →

Tägliches Backup um 5 Uhr morgens als root-Benutzer (System-Crontab-Format aus /etc/crontab).

0 5 * * * root /usr/bin/backup.sh

Cron mit Befehl (Benutzer-Crontab)

Ausprobieren →

Health-Check alle 5 Minuten (Benutzer-Crontab-Format).

*/5 * * * * curl -s http://localhost/health

Monatlich am Ersten

Ausprobieren →

Läuft um Mitternacht am ersten Tag jedes Monats.

0 0 1 * *

Tipps

  • Die fünf Felder sind: Minute (0-59), Stunde (0-23), Tag des Monats (1-31), Monat (1-12), Wochentag (0-6, Sonntag=0).
  • System-Crontabs (/etc/crontab, /etc/cron.d/*) haben ein 6. Feld für den Benutzernamen vor dem Befehl.
  • Benutzer-Crontabs (crontab -e) haben kein Benutzernamen-Feld; sie laufen als Crontab-Besitzer.
  • Verwenden Sie * für "jede/r" und */n für "jede/r n-te".
  • Tagesnamen (SUN-SAT) und Monatsnamen (JAN-DEC) sind nicht groß-/kleinschreibungsempfindlich.
  • Seien Sie vorsichtig mit Tag-des-Monats und Wochentag zusammen; das Verhalten variiert je nach Implementierung.

Verstaendnis Cron-Ausdruck-Parser

Cron ist der zeitbasierte Aufgabenplaner in Unix-ähnlichen Betriebssystemen, und Cron-Ausdrücke sind die kompakte Syntax zur Definition, wann ein Job ausgeführt wird. Das standardmäßige Fünf-Feld-Format gibt Minute (0-59), Stunde (0-23), Tag des Monats (1-31), Monat (1-12) und Wochentag (0-6, wobei 0 für Sonntag steht) an. Ein Sternchen (*) steht für alle Werte, sodass "* * * * *" jede Minute ausgeführt wird.

Über einfache Werte hinaus unterstützt Cron mehrere Operatoren. Bereiche (1-5) entsprechen einem zusammenhängenden Abschnitt. Listen (1,3,5) entsprechen einzelnen Werten. Schritte (*/15) erzeugen regelmäßige Intervalle. Diese lassen sich kombinieren: 1-5/2 im Wochentag-Feld bedeutet Montag, Mittwoch, Freitag. Monats- und Wochentag-Felder akzeptieren dreibuchstabige Namen (JAN-DEC, SUN-SAT).

Cron-Implementierungen variieren. Benutzer-Crontabs haben fünf Felder plus den Befehl. System-Crontabs fügen ein Benutzernamen-Feld hinzu. Einige Implementierungen unterstützen ein sechstes Feld für Sekunden (Spring, Quartz, Kubernetes) und ein siebtes für das Jahr. AWS EventBridge, GitHub Actions und andere Cloud-Scheduler haben jeweils ihre eigenen Variationen.

Häufige Fallstricke sind die Wechselwirkung zwischen Tag-des-Monats- und Wochentag-Feldern: Wenn beide angegeben sind (nicht *), läuft der Job, wenn eine der beiden Bedingungen wahr ist (ODER-Logik). Zeitzonen-Handling ist ein weiteres Problem — Cron-Jobs laufen in der Systemzeitzone, sofern nicht CRON_TZ gesetzt ist, und Sommerzeitumstellungen können dazu führen, dass Jobs übersprungen werden oder doppelt laufen.

Der /-Operator erzeugt Schritte. */5 im Minutenfeld bedeutet "alle 5 Minuten" und erzeugt Ausführungen bei 0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50 und 55 Minuten nach der vollen Stunde. Bereiche können mit Schritten kombiniert werden: 10-30/5 bedeutet alle 5 Minuten zwischen Minute 10 und Minute 30. Um einen Job zu einer bestimmten Zeit an bestimmten Tagen auszuführen, setzen Sie die Minuten- und Stundenfelder auf die gewünschte Zeit und das Wochentag-Feld auf die Zieltage. Zum Beispiel läuft "30 14 * * 1-5" um 14:30 Uhr Montag bis Freitag, und "0 9 * * 0" läuft um 9 Uhr jeden Sonntag. Alle Zeiten werden in der lokalen Zeitzone des Servers interpretiert, sofern nicht CRON_TZ explizit konfiguriert ist.

Cron verwendet die Wanduhrzeit, was bedeutet, dass Sommerzeitumstellungen unerwartetes Verhalten verursachen können. Wenn die Uhren vorgestellt werden, können Jobs, die zwischen 2:00 und 2:59 Uhr geplant sind, vollständig übersprungen werden. Wenn die Uhren zurückgestellt werden, können Jobs in diesem Zeitfenster doppelt laufen. Für kritische Jobs vermeidet die Einstellung CRON_TZ=UTC diese Probleme. Alternativ vermeiden Sie es, Jobs während des Umstellungszeitfensters zu planen, oder gestalten Sie Jobs idempotent, sodass doppelte Ausführungen harmlos sind.

Die Cron-Syntax wurde weit über Unix-Systeme hinaus übernommen. Kubernetes CronJobs, GitHub Actions, GitLab CI, AWS EventBridge, Google Cloud Scheduler, Spring @Scheduled und viele Task-Queue-Bibliotheken verwenden alle Cron-Ausdrücke für die Zeitplanung. Jede Implementierung kann jedoch unterschiedliche Funktionen unterstützen — einige fügen ein Sekundenfeld hinzu, einige ein Jahresfeld, und einige verwenden ? für "kein bestimmter Wert" in den Tag-des-Monats- oder Wochentag-Feldern.

← Zurueck zu allen Tools