Cron ist ein zeitbasierter Job-Scheduler, der in Unix- und Linux-Betriebssystemen integriert ist. Er ermöglicht die automatische Ausführung von Befehlen oder Skripten zu festen Zeiten, Daten oder Intervallen — ohne manuellen Eingriff. Der Name stammt vom griechischen Wort chronos (Zeit). Cron ist das Standardwerkzeug zur Automatisierung wiederkehrender Systemaufgaben wie Backups, Log-Rotation, Berichterstellung und das Versenden von E-Mails.
Möchten Sie einen Cron-Ausdruck erstellen oder validieren?
Cron Builder öffnen →Das ursprüngliche Cron wurde von Ken Thompson bei Bell Labs als Teil von Version 7 Unix um 1979 geschrieben. Es war ein einfacher Daemon, der jede Minute aufwachte, eine Jobtabelle prüfte und alle geplanten Jobs ausführte. Vixie Cron, von Paul Vixie in den Jahren 1987–1988 geschrieben, ersetzte es als Standardimplementierung auf den meisten Unix-Systemen und führte die bekannte Fünf-Felder-Syntax ein, die noch heute verwendet wird. Vixie Cron (oder seine Nachkommen) ist das Standard-Cron auf den meisten Linux-Distributionen. Moderne Varianten umfassen Anacron (für Systeme, die nicht durchgehend laufen), Fcron und systemd-Timer als Alternative auf systemd-basierten Systemen.
Der Cron-Daemon (crond) läuft kontinuierlich im Hintergrund. Jede Minute liest er die Crontab-Dateien (eine pro Benutzer, plus systemweite Crontabs in /etc/cron.d/) und führt alle Jobs aus, deren geplante Zeit mit der aktuellen Zeit übereinstimmt. Jeder Benutzer verwaltet seine eigene Crontab mit dem Befehl crontab.
/dev/null oder eine Log-Datei, um dies zu unterdrücken)Ein Cron-Ausdruck besteht aus fünf durch Leerzeichen getrennten Feldern, gefolgt vom auszuführenden Befehl:
┌───────────── Minute (0–59)
│ ┌───────────── Stunde (0–23)
│ │ ┌───────────── Tag des Monats (1–31)
│ │ │ ┌───────────── Monat (1–12)
│ │ │ │ ┌───────────── Wochentag (0–7, 0 und 7 = Sonntag)
│ │ │ │ │
* * * * * auszuführender Befehl
# Jede Minute
* * * * * /path/to/script.sh
# Jeden Tag um Mitternacht
0 0 * * * /path/to/backup.sh
# Jeden Tag um 3:30 Uhr
30 3 * * * /path/to/task.sh
# Jeden Montag um 9:00 Uhr
0 9 * * 1 /path/to/weekly-report.sh
# Alle 5 Minuten
*/5 * * * * /path/to/check.sh
# Jede Stunde (zur Minute 0)
0 * * * * /path/to/hourly.sh
# Ersten Tag jeden Monats um Mitternacht
0 0 1 * * /path/to/monthly.sh
# Jeden Werktag (Mo–Fr) um 8:00 Uhr
0 8 * * 1-5 /path/to/workday.sh
# Alle 15 Minuten zwischen 9 und 17 Uhr an Werktagen
*/15 9-17 * * 1-5 /path/to/poll.sh
# Zweimal täglich (Mitternacht und Mittag)
0 0,12 * * * /path/to/twice-daily.sh
Je nach Plattform werden Ihnen zwei verbreitete Cron-Formate begegnen:
Das klassische Format, das von crontab unter Unix/Linux verwendet wird. Die kleinste Einheit ist eine Minute.
# Minute Stunde Tag-des-Monats Monat Wochentag
* * * * *
Verwendet vom Quartz Scheduler (Java), Spring @Scheduled, AWS EventBridge und vielen CI/CD-Tools. Am Anfang wird ein zusätzliches Sekundenfeld hinzugefügt, und am Ende kann optional ein Jahresfeld angehängt werden.
# Sekunde Minute Stunde Tag-des-Monats Monat Wochentag [Jahr]
0 30 9 * * ?
Quartz führt außerdem zusätzliche Sonderzeichen ein, die im Standard-Cron nicht verfügbar sind:
? — Kein spezifischer Wert; wird in Tag-des-Monats oder Wochentag verwendet, wenn das andere angegeben ist (Sie können nicht beide auf einen Nicht-Platzhalter-Wert setzen — verwenden Sie ? für das Feld, das Sie ignorieren möchten)L — Letzter: L im Tag-des-Monats-Feld bedeutet den letzten Tag des Monats; 5L im Wochentagsfeld bedeutet den letzten Freitag des MonatsW — Nächster Werktag: 15W bedeutet den nächsten Werktag zum 15. des Monats# — N-ter Wochentag des Monats: 2#1 bedeutet den ersten Montag des Monats# Standard-Cron — jeden Tag um 09:30
30 9 * * *
# Quartz-Cron — jeden Tag um 09:30:00
0 30 9 * * ?
# Standard-Cron — jeden Montag um 08:00
0 8 * * 1
# Quartz-Cron — jeden Montag um 08:00:00
0 0 8 ? * MON
# Standard-Cron — alle 5 Minuten
*/5 * * * *
# Quartz-Cron — alle 5 Minuten
0 */5 * * * ?
# Nur Quartz — letzter Tag jedes Monats um Mitternacht
0 0 0 L * ?
# Nur Quartz — erster Montag jedes Monats um 09:00
0 0 9 ? * 2#1
?)Die meisten Cron-Implementierungen unterstützen Kurzschreibweisen als Alternative zur Fünf-Felder-Syntax:
@yearly (oder @annually) — Einmal im Jahr ausführen: 0 0 1 1 *@monthly — Einmal im Monat ausführen: 0 0 1 * *@weekly — Einmal pro Woche ausführen: 0 0 * * 0@daily (oder @midnight) — Einmal täglich ausführen: 0 0 * * *@hourly — Einmal pro Stunde ausführen: 0 * * * *@reboot — Einmal beim Start ausführen# Crontab im Standard-Editor bearbeiten
crontab -e
# Aktuelle Crontab auflisten
crontab -l
# Crontab vollständig entfernen
crontab -r
# Crontab eines anderen Benutzers bearbeiten (nur root)
crontab -u username -e
PATHcommand >> /var/log/job.log 2>&1flock oder eine Lock-Datei, wenn Sie keine überlappenden Ausführungen desselben Jobs wollencrontab -r — es löscht Ihre gesamte Crontab ohne BestätigungCron ist ein zeitbasierter Job-Scheduler in Unix- und Linux-Betriebssystemen. Er ermöglicht es Benutzern, Befehle oder Skripte so zu planen, dass sie automatisch zu bestimmten Zeiten, Daten oder Intervallen ausgeführt werden. Der Name stammt vom griechischen Wort chronos, das Zeit bedeutet.
Ein Cron-Job ist eine Aufgabe, die so geplant ist, dass sie mit dem Cron-Daemon automatisch zu einer definierten Zeit oder in einem definierten Intervall ausgeführt wird. Jeder Cron-Job ist eine Zeile in einer Crontab-Datei, bestehend aus einem Cron-Ausdruck (5 Zeitfelder) gefolgt vom auszuführenden Befehl.
Ein Cron-Ausdruck ist eine Zeichenkette aus fünf durch Leerzeichen getrennten Feldern, die einen Zeitplan definieren: Minute (0–59), Stunde (0–23), Tag des Monats (1–31), Monat (1–12) und Wochentag (0–7). Jedes Feld akzeptiert spezifische Werte, Bereiche (1-5), Schrittweiten (*/5) und Platzhalter (*).
Ein Sternchen (*) bedeutet "jeden" — es stimmt mit jedem gültigen Wert für dieses Feld überein. * * * * * läuft jede Minute. 0 * * * * läuft zur Minute 0 jeder Stunde (d. h. jede volle Stunde).
Cron ist der Daemon (Hintergrunddienst), der Zeitpläne liest und Jobs ausführt. Crontab (Cron-Tabelle) ist die Konfigurationsdatei, die die Liste der geplanten Jobs speichert. Sie bearbeiten Ihre Crontab mit crontab -e, und der Cron-Daemon liest sie, um zu wissen, wann jeder Job ausgeführt werden soll.
Verwenden Sie die Schritt-Syntax: */5 * * * * /pfad/zum/befehl. Das */5 bedeutet "zur Minute 0, 5, 10, 15 … 55". Ebenso bedeutet */10 alle 10 Minuten und */15 alle 15 Minuten.