Backups, die nachts um drei laufen. Reports, die jeden Montagmorgen im Postfach liegen. Ein Cache, der alle fünf Minuten geleert wird. Hinter all diesen wiederkehrenden Aufgaben steckt fast immer Cron – der Klassiker unter den Job-Schedulern auf Linux- und Unix-Servern. Wer ihn versteht, automatisiert seinen Server-Alltag mühelos. Dieser Ratgeber erklärt den berüchtigten Cron-Ausdruck Feld für Feld.
Was ist Cron?
Cron ist ein Dienst (Daemon), der im Hintergrund läuft und einmal pro Minute prüft, ob eine geplante Aufgabe ansteht. Die Aufgaben selbst – die Cronjobs – stehen in einer Tabelle namens crontab ("cron table"). Jede Zeile darin besteht aus zwei Teilen: einem Zeitplan und dem Befehl, der zu diesem Zeitpunkt ausgeführt werden soll.
Der Zeitplan ist genau das, was viele am Anfang verwirrt: eine kryptische Folge aus Zahlen und Sternchen. Dabei folgt sie einem klaren System.
Die fünf Felder im Detail
Ein klassischer Cron-Ausdruck besteht aus fünf durch Leerzeichen getrennten Feldern, immer in dieser Reihenfolge:
- Minute – Wert von 0 bis 59
- Stunde – Wert von 0 bis 23 (im 24-Stunden-Format)
- Tag des Monats – Wert von 1 bis 31
- Monat – Wert von 1 bis 12 (oder Kürzel wie JAN, FEB)
- Wochentag – Wert von 0 bis 7, wobei 0 und 7 beide für Sonntag stehen (oder Kürzel wie MON, SUN)
Liest man die fünf Werte von links nach rechts, ergibt sich der genaue Auslösezeitpunkt. 30 8 * * 1 bedeutet beispielsweise: jede Woche montags um 8:30 Uhr. Mit dem Cron Generator stellst du Intervall, Uhrzeit und Wochentag bequem ein und bekommst den fertigen Ausdruck ausgegeben – ohne raten zu müssen.
Die Sonderzeichen
Die eigentliche Flexibilität von Cron steckt in vier Sonderzeichen, mit denen sich jedes Feld feiner steuern lässt.
Der Stern (*)
Das Sternchen steht für "jeder mögliche Wert". Ein * im Minutenfeld heißt "jede Minute", im Wochentagsfeld "an jedem Wochentag". Stehen in allen fünf Feldern Sterne (* * * * *), läuft der Job jede einzelne Minute.
Der Schrägstrich (/) für Intervalle
Mit dem Schrägstrich definierst du Schrittweiten. */15 im Minutenfeld bedeutet "alle 15 Minuten", also zu Minute 0, 15, 30 und 45. Das ist der häufigste Anwendungsfall für regelmäßige, eng getaktete Aufgaben.
Das Komma (,) für Listen
Mit dem Komma zählst du einzelne Werte auf. 0 9,13,17 * * * löst den Job dreimal täglich aus – um 9, 13 und 17 Uhr.
Der Bindestrich (-) für Bereiche
Der Bindestrich definiert eine Spanne. 1-5 im Wochentagsfeld bedeutet Montag bis Freitag. So lassen sich etwa Aufgaben nur an Werktagen einplanen.
Typische Beispiele aus der Praxis
Diese Muster decken einen Großteil der Anwendungsfälle ab:
- Stündlich:
0 * * * *– jeweils zur vollen Stunde. - Täglich nachts:
0 3 * * *– jeden Tag um 3:00 Uhr, beliebt für Backups in der lastarmen Zeit. - Wöchentlich:
0 0 * * 0– jeden Sonntag um Mitternacht. - Monatlich:
0 0 1 * *– am ersten Tag jedes Monats. - Nur werktags:
0 8 * * 1-5– Montag bis Freitag um 8 Uhr.
Häufige Stolperfallen
Cron ist mächtig, aber gnadenlos präzise. Diese Fehler kosten Anfänger regelmäßig Nerven:
- Zeitzone: Cron richtet sich nach der Systemzeit des Servers. Steht dein Server auf UTC, läuft ein "3-Uhr-Job" womöglich um 5 Uhr deiner Ortszeit.
- Tag-des-Monats und Wochentag zusammen: Sind beide Felder gesetzt (nicht
*), verknüpft Cron sie mit ODER, nicht mit UND – ein häufiges Missverständnis. - Umgebungsvariablen: Cron startet Jobs mit einer minimalen Umgebung. Pfade, die in deiner Shell funktionieren, fehlen hier oft – nutze immer absolute Pfade.
- Keine Ausgabe sichtbar: Ohne Logging verschwinden Fehlermeldungen spurlos. Leite die Ausgabe in eine Logdatei um.
Bevor du einen Ausdruck produktiv einsetzt, kontrolliere mit dem Cron Generator noch einmal die Klartext-Beschreibung. So vermeidest du, dass ein Job versehentlich jede Minute statt einmal täglich feuert. Wie oft ein Intervall pro Tag, Woche und Monat wirklich läuft, rechnest du mit dem Cron Intervall Rechner nach. Weitere Server-Helfer gibt es in den kotsch.tech Webtools.
Häufige Fragen
Wie bearbeite ich meine crontab?
Auf den meisten Systemen öffnest du sie mit dem Befehl crontab -e im Terminal. Damit landest du in einem Editor und kannst Zeilen hinzufügen oder ändern. Mit crontab -l lässt du dir die aktuelle Liste nur anzeigen.
Was ist der Unterschied zwischen Cron und systemd-Timern?
Beide planen wiederkehrende Aufgaben. Cron ist der ältere, einfachere Standard mit der bekannten Fünf-Felder-Syntax. systemd-Timer bieten mehr Funktionen wie Abhängigkeiten und Nachholen verpasster Läufe, sind dafür aber komplexer zu konfigurieren. Für einfache Zeitpläne reicht Cron meist völlig.
Gibt es ein sechstes Feld für Sekunden?
Klassischer Unix-Cron kennt nur fünf Felder und damit eine minütliche Auflösung. Manche Erweiterungen und Scheduler-Bibliotheken (etwa in Programmiersprachen) ergänzen ein sechstes Feld für Sekunden ganz vorne. Auf einem Standard-Linux-Server bleibt es aber bei fünf Feldern.