Cron-Ausdrücke erklärt: Vollständiger Syntax-Leitfaden

· 12 Min. Lesezeit

📑 Inhaltsverzeichnis

Cron ist der zeitbasierte Job-Scheduler in Unix-ähnlichen Betriebssystemen. Wenn Sie ein Skript um Mitternacht ausführen, jeden Sonntag eine Datenbank sichern, stündlich temporäre Dateien löschen oder am Ersten jedes Monats Berichte versenden müssen, ist Cron Ihr Werkzeug. Aber seine Ausdruckssyntax – diese kryptischen Zeichenfolgen wie 0 */6 * * 1-5 – kann anfangs einschüchternd sein.

Dieser Leitfaden entmystifiziert Cron-Ausdrücke vollständig. Sie lernen jedes Feld, jedes Sonderzeichen kennen, sehen Dutzende realer Muster und verstehen die Zeitzonen-Fallstricke, über die selbst erfahrene Entwickler stolpern. Ob Sie Backups planen, Wartungsskripte ausführen oder Berichte automatisieren – die Beherrschung der Cron-Syntax ist für jeden Entwickler oder Systemadministrator unerlässlich.

Anatomie eines Cron-Ausdrucks

Ein Standard-Cron-Ausdruck hat fünf durch Leerzeichen getrennte Felder. Jedes Feld repräsentiert eine Zeiteinheit, und zusammen definieren sie genau, wann Ihr Job ausgeführt werden soll.

┌───────────── Minute (0-59)
│ ┌─────────── Stunde (0-23)
│ │ ┌───────── Tag des Monats (1-31)
│ │ │ ┌─────── Monat (1-12)
│ │ │ │ ┌───── Wochentag (0-6, So=0)
│ │ │ │ │
* * * * *  auszuführender Befehl

Jedes Feld kann eine Zahl, einen Bereich, eine Liste, einen Schrittwert oder ein Platzhalterzeichen enthalten. Die Schönheit von Cron liegt darin, dass diese einfachen Bausteine sich zu unglaublich flexiblen Planungsmustern kombinieren lassen.

Einige Cron-Implementierungen unterstützen ein sechstes Feld für Sekunden und ein siebtes für das Jahr, aber das Standard-Fünf-Felder-Format wird universell unterstützt und ist das, was Sie in den meisten Unix-ähnlichen Systemen einschließlich Linux, macOS und BSD-Varianten antreffen werden.

Die fünf Felder im Detail

Das Verständnis des Bereichs und Verhaltens jedes Feldes ist entscheidend für das Schreiben korrekter Cron-Ausdrücke. Lassen Sie uns jedes systematisch untersuchen.

Feld Bereich Sonderzeichen Beispiel
Minute 0-59 * , - / */15 (alle 15 Min.)
Stunde 0-23 * , - / 9-17 (9 bis 17 Uhr)
Tag des Monats 1-31 * , - / L W 1,15 (1. und 15.)
Monat 1-12 oder JAN-DEZ * , - / 1-6 (Jan bis Jun)
Wochentag 0-6 oder SO-SA * , - / L # 1-5 (Mo bis Fr)

Minutenfeld (0-59)

Das Minutenfeld steuert, in welcher Minute der Stunde Ihr Job ausgeführt wird. Ein Wert von 0 bedeutet zur vollen Stunde, 30 bedeutet halb, und 59 ist die letzte Minute der Stunde.

Häufige Muster sind */5 für alle 5 Minuten, 0,30 für zweimal pro Stunde oder 15 für Viertel nach jeder Stunde.

Stundenfeld (0-23)

Stunden verwenden das 24-Stunden-Format, wobei 0 Mitternacht ist, 12 Mittag und 23 23 Uhr. Dies ist eine der häufigsten Verwechslungsquellen für Entwickler, die an die 12-Stunden-AM/PM-Notation gewöhnt sind.

Geschäftszeiten werden typischerweise als 9-17 (9 bis 17 Uhr) dargestellt, während nächtliche Wartung 0-6 (Mitternacht bis 6 Uhr) verwenden könnte.

Tag-des-Monats-Feld (1-31)

Dieses Feld gibt an, an welchem Tag des Monats ausgeführt werden soll. Gültige Werte sind 1 bis 31, obwohl nicht alle Monate 31 Tage haben. Cron handhabt dies elegant – wenn Sie Tag 31 im Februar angeben, wird der Job in diesem Monat einfach nicht ausgeführt.

Das Sonderzeichen L bedeutet "letzter Tag des Monats" und passt sich automatisch an Monatslänge und Schaltjahre an.

Monatsfeld (1-12)

Monate können numerisch angegeben werden (1 für Januar bis 12 für Dezember) oder mit dreistelligen Abkürzungen (JAN, FEB, MAR usw.). Die Abkürzungen sind in den meisten Implementierungen nicht case-sensitiv.

Vierteljährliche Zeitpläne verwenden oft Muster wie 1,4,7,10 (Januar, April, Juli, Oktober) oder 3,6,9,12 für Quartalsenden.

Wochentagsfeld (0-6)

Wochentage reichen von 0 (Sonntag) bis 6 (Samstag). Einige Systeme akzeptieren auch 7 als Sonntag zur Vereinfachung. Dreistellige Abkürzungen (SO, MO, DI usw.) werden ebenfalls unterstützt.

Das häufigste Muster ist 1-5 für Wochentage (Montag bis Freitag), während 0,6 oder 6,0 Wochenenden darstellt.

Profi-Tipp: Wenn sowohl Tag des Monats als auch Wochentag angegeben sind (keine Platzhalter), wird der Job ausgeführt, wenn eine der beiden Bedingungen erfüllt ist (ODER-Logik), nicht beide. Dies überrascht viele Entwickler. Zum Beispiel läuft 0 0 13 * 5 am 13. jedes Monats und jeden Freitag, nicht nur an Freitag dem 13.

Sonderzeichen erklärt

Sonderzeichen verleihen Cron-Ausdrücken ihre Kraft und Flexibilität. Jedes Zeichen dient einem bestimmten Zweck bei der Definition von Planungsmustern.

Sternchen (*) - Platzhalter

Das Sternchen bedeutet "jeder mögliche Wert" für dieses Feld. Es ist das am häufigsten verwendete Sonderzeichen und erscheint in fast jedem Cron-Ausdruck.

Komma (,) - Listentrennzeichen

Kommas ermöglichen die Angabe mehrerer diskreter Werte. Dies ist perfekt, wenn Sie bestimmte, nicht aufeinanderfolgende Zeiten benötigen.

Bindestrich (-) - Bereichsoperator

Bindestriche definieren inklusive Bereiche und erleichtern die Angabe kontinuierlicher Zeiträume.

Schrägstrich (/) - Schrittwerte

Der Schrägstrich gibt Schrittintervalle an und ermöglicht die Ausführung von Jobs in regelmäßigen Abständen innerhalb eines Bereichs. Die Syntax ist start/schritt oder */schritt für den gesamten Bereich.

Schneller Tipp: */15 bedeutet nicht "alle 15 Minuten ab jetzt" – es bedeutet zu den Minuten 0, 15, 30 und 45 jeder Stunde. Wenn Sie einen Cron-Job um 10:07 hinzufügen, wird ein */15-Muster zuerst um 10:15 ausgeführt, nicht um 10:22.

L - Letzter Tag

Das Zeichen L bedeutet "letzter" und wird in den Feldern Tag des Monats und Wochentag verwendet. Es ist besonders nützlich für Monatsendverarbeitung, die unterschiedliche Monatslängen berücksichtigen muss.

W - Nächster Wochentag

Das Zeichen W findet den nächsten Wochentag zu einem bestimmten Tag des Monats. Wenn der angegebene Tag auf ein Wochenende fällt, wird der Job stattdessen am nächsten Wochentag ausgeführt.

Raute (#) - N-ter Wochentag

Das Rautezeichen gibt das N-te Vorkommen eines Wochentags innerhalb eines Monats an. Die Syntax ist tag#vorkommen.

Beachten Sie, dass L, W und # nicht in allen Cron-Implementierungen unterstützt werden. Sie sind in modernen Versionen wie Vixie Cron und den meisten Cloud-basierten Schedulern verfügbar, funktionieren aber möglicherweise nicht in älteren Unix-Systemen.

Häufige Cron-Muster

Schauen wir uns reale Planungsmuster an, die Sie regelmäßig verwenden werden. Diese Beispiele decken die häufigsten Automatisierungsszenarien ab.

Jede Minute, Stunde und Tag

Mehrmals täglich

Wöchentliche Zeitpläne

Monatliche Zeitpläne

Geschäftszeiten und Wartungsfenster

Anwendungsfall Cron-Ausdruck Beschreibung
Datenbank-Backup 0 2 * * * Täglich um 2 Uhr
Log-Rotation 0 0 * * 0 Wöchentlich Sonntag Mitternacht
Cache-Löschung