Cron-Ausdruck Spickzettel â Jobs planen wie ein Profi
Cron ist das RĂŒckgrat der automatisierten Aufgabenplanung auf Unix-Ă€hnlichen Systemen. Ob Sie Logs rotieren, Datenbank-Backups ausfĂŒhren oder CI/CD-Pipelines auslösen â Cron-AusdrĂŒcke definieren wann diese Jobs ausgefĂŒhrt werden. Die Syntax ist kompakt aber mĂ€chtig â und leicht falsch zu machen, wenn man rĂ€t.
Diese Referenz deckt jeden Teil der Cron-Syntax mit praktischen, kopierfertigen Beispielen ab. Wenn Sie AusdrĂŒcke interaktiv erstellen und validieren möchten, öffnen Sie den Cron-Ausdruck-Builder neben dieser Anleitung.
Cron-Syntax: Die fĂŒnf Felder
Ein Standard-Cron-Ausdruck besteht aus fĂŒnf durch Leerzeichen getrennten Feldern:
ââââââââââââââ Minute (0â59)
â ââââââââââââââ Stunde (0â23)
â â ââââââââââââââ Tag des Monats (1â31)
â â â ââââââââââââââ Monat (1â12)
â â â â ââââââââââââââ Wochentag (0â7, wobei 0 und 7 = Sonntag)
â â â â â
* * * * *
Jedes Feld akzeptiert einen bestimmten Wert, einen Bereich, eine Liste oder einen Platzhalter. Zusammen legen die fĂŒnf Felder einen exakten wiederkehrenden Zeitplan fest.
| Feld | Erlaubte Werte | Sonderzeichen |
|---|---|---|
| Minute | 0â59 | * , - / |
| Stunde | 0â23 | * , - / |
| Tag des Monats | 1â31 | * , - / |
| Monat | 1â12 | * , - / |
| Wochentag | 0â7 | * , - / |
Monats- und Wochentagfelder akzeptieren auch dreibuchstabige AbkĂŒrzungen (JANâDEC, SUNâSAT) in den meisten Implementierungen.
Sonderzeichen erklÀrt
Das VerstĂ€ndnis von vier Sonderzeichen erschlieĂt die volle Kraft von Cron:
Sternchen * â âJeder"
Stimmt mit jedem möglichen Wert fĂŒr dieses Feld ĂŒberein.
* * * * * # Jede Minute jeder Stunde jeden Tages
Komma , â âUnd"
Gibt eine Liste diskreter Werte an.
0 9,12,18 * * * # Um 9:00, 12:00 und 18:00 Uhr tÀglich
Bindestrich - â âBis"
Definiert einen inklusiven Bereich.
0 9-17 * * * # Jede Stunde von 9 bis 17 Uhr
SchrĂ€gstrich / â âJedes n-te"
Legt ein Schrittintervall vom Beginn des Bereichs fest.
*/10 * * * * # Alle 10 Minuten (0, 10, 20, 30, 40, 50)
Sie können einen Bereich mit einem Schritt kombinieren:
0 9-17/2 * * * # Alle 2 Stunden von 9 bis 17 Uhr (9, 11, 13, 15, 17)
GĂ€ngige Cron-Zeitplan-Beispiele
Merken Sie sich diese Tabelle. Das sind die ZeitplÀne, die Sie immer wieder verwenden werden.
| Zeitplan | Ausdruck | ErklÀrung |
|---|---|---|
| Jede Minute | * * * * * | LĂ€uft zu Beginn jeder Minute |
| Alle 5 Minuten | */5 * * * * | Minuten 0, 5, 10, 15, âŠ, 55 |
| Alle 15 Minuten | */15 * * * * | Minuten 0, 15, 30, 45 |
| Jede Stunde | 0 * * * * | In Minute 0 jeder Stunde |
| Alle 6 Stunden | 0 */6 * * * | Um 00:00, 06:00, 12:00, 18:00 |
| TÀglich um Mitternacht | 0 0 * * * | Einmal tÀglich um 00:00 |
| TÀglich um 3 Uhr | 0 3 * * * | Einmal tÀglich um 03:00 |
| Jeden Montag um 9 Uhr | 0 9 * * 1 | Wöchentlich am Montag um 09:00 |
| Jeden Werktag um 8 Uhr | 0 8 * * 1-5 | Montag bis Freitag um 08:00 |
| Jedes Wochenende um 12 Uhr | 0 12 * * 0,6 | Samstag und Sonntag um 12:00 |
| Erster jedes Monats | 0 0 1 * * | Mitternacht am 1. jedes Monats |
| Jedes Quartal (Jan, Apr, Jul, Okt) | 0 0 1 1,4,7,10 * | Mitternacht am 1. der Quartalsmonate |
| Alle 15 Min wĂ€hrend GeschĂ€ftszeiten | */15 9-17 * * 1-5 | Werktags, 9â17 Uhr, alle 15 Minuten |
FĂŒgen Sie jeden Ausdruck in den Cron-Ausdruck-Builder ein, um die nĂ€chsten AusfĂŒhrungszeiten zu visualisieren.
Fortgeschrittene Muster
Listen und Bereiche kombinieren
Felder akzeptieren gemischte Syntax. Um einen Job um 8 Uhr und 18 Uhr an Werktagen auszufĂŒhren:
0 8,18 * * 1-5
Um bestimmte Monate mit einem Schritt anzuvisieren:
0 0 1 1-12/3 * # Alle 3 Monate ab Januar (Jan, Apr, Jul, Okt)
Tag des Monats vs. Wochentag
Wenn sowohl Tag des Monats als auch Wochentag gesetzt sind (nicht *), hĂ€ngt das Verhalten von der Implementierung ab. Im Standard-Cron wird der Job ausgefĂŒhrt, wenn eine der Bedingungen erfĂŒllt ist â es ist eine ODER-Beziehung, kein UND. Das ĂŒberrascht viele.
0 0 15 * 1 # LĂ€uft am 15. UND jeden Montag â nicht "Montag der 15."
AusfĂŒhrung beim Systemstart
Obwohl kein Cron-Ausdruck im eigentlichen Sinne, ist @reboot eine weit unterstĂŒtzte Kurzform:
@reboot /usr/local/bin/start-service.sh
Andere gÀngige Kurzformen:
| Kurzform | Entsprechung |
|---|---|
@yearly | 0 0 1 1 * |
@monthly | 0 0 1 * * |
@weekly | 0 0 * * 0 |
@daily | 0 0 * * * |
@hourly | 0 * * * * |
Cron in verschiedenen Umgebungen
Die FĂŒnf-Felder-Syntax ist universell, aber wie Sie Cron konfigurieren, variiert je nach Plattform.
Linux Crontab
Der Klassiker. Bearbeiten Sie Ihr Benutzer-Crontab mit crontab -e:
# Backup jeden Tag um 2 Uhr ausfĂŒhren
0 2 * * * /home/user/scripts/backup.sh >> /var/log/backup.log 2>&1
Systemweite Cron-Jobs in /etc/cron.d/ enthalten ein zusÀtzliches Benutzerfeld:
0 2 * * * root /usr/local/bin/cleanup.sh
GitHub Actions
GitHub Actions verwendet die gleiche FĂŒnf-Felder-Syntax innerhalb eines schedule-Triggers. Alle Zeiten sind UTC.
on:
schedule:
- cron: '0 3 * * 1-5' # Werktags um 3 Uhr UTC
FĂŒr eine vertiefte YAML-Konfiguration siehe YAML fĂŒr Kubernetes und YAML fĂŒr Docker Compose.
Kubernetes CronJob
Kubernetes kapselt Cron-AusdrĂŒcke in einer CronJob-Ressource:
apiVersion: batch/v1
kind: CronJob
metadata:
name: nightly-report
spec:
schedule: "0 2 * * *"
jobTemplate:
spec:
template:
spec:
containers:
- name: report
image: reporting:latest
command: ["python", "generate_report.py"]
restartPolicy: OnFailure
Kubernetes verwendet standardmĂ€Ăig UTC. Ab v1.25 können Sie timeZone: "America/New_York" in der CronJob-Spezifikation setzen.
AWS CloudWatch (EventBridge)
AWS verwendet eine leicht abweichende Syntax mit sechs Feldern (Sekunden hinzugefĂŒgt) und den rate() / cron()-Wrappern:
cron(0 3 * * ? *) # TĂ€glich um 3 Uhr UTC
Beachten Sie das ?-Zeichen â AWS erfordert es fĂŒr entweder Tag des Monats oder Wochentag, wenn der andere angegeben ist. Dies unterscheidet sich vom Standard-Cron.
HĂ€ufige Fallstricke
1. Zeitzonen-Verwirrung
Cron verwendet auf Linux die Systemzeitzone, aber Kubernetes und GitHub Actions laufen in UTC. Ein Job mit 0 9 * * * wird um 9 Uhr UTC ausgelöst, was 10 Uhr MEZ entspricht.
ĂberprĂŒfen Sie immer, welche Zeitzone Ihr Scheduler verwendet. FĂŒr Zeitstempel-Konvertierungen behandelt unsere Anleitung Unix-Zeitstempel erklĂ€rt UTC-Offsets im Detail.
2. Ăberlappende AusfĂŒhrungen
Wenn ein Job lĂ€nger dauert als das Intervall zwischen den AusfĂŒhrungen, erhalten Sie ĂŒberlappende Instanzen. Ein Skript, das 8 Minuten mit einem */5 * * * *-Zeitplan lĂ€uft, wird sich aufstauen.
Lösungen:
- Verwenden Sie eine Sperrdatei (
flockunter Linux) - Setzen Sie
concurrencyPolicy: Forbidin Kubernetes CronJobs - PrĂŒfen Sie auf laufende Instanzen zu Beginn Ihres Skripts
3. Fehlende Ausgabe und Debugging
Cron erfasst stdout nicht standardmĂ€Ăig. Leiten Sie die Ausgabe immer um:
*/5 * * * * /path/to/script.sh >> /var/log/myjob.log 2>&1
Wenn ein Cron-Job nicht lĂ€uft, prĂŒfen Sie:
grep CRON /var/log/syslogfĂŒr AusfĂŒhrungslogs- Dateiberechtigungen des Skripts
- Die
PATH-Umgebungsvariable â Cron hat standardmĂ€Ăig einen minimalenPATH
4. Die â31. jedes Monats"-Falle
0 0 31 * * # LĂ€uft nur in Monaten mit 31 Tagen
Dies lĂ€uft im Januar, MĂ€rz, Mai, Juli, August, Oktober und Dezember â ĂŒberspringt aber stillschweigend die anderen fĂŒnf Monate. Wenn Sie einen Monatsende-Job benötigen, erwĂ€gen Sie, am 1. auszufĂŒhren und Ihre Skript-Logik anzupassen, oder verwenden Sie ein Tool, das âletzter Tag des Monats"-Semantik unterstĂŒtzt.
5. Fehlende Neue Zeile am Ende des Crontab
Einige Cron-Implementierungen erfordern einen abschlieĂenden Zeilenumbruch in der Crontab-Datei. Wenn Ihr letzter Eintrag nicht ausgefĂŒhrt wird, fĂŒgen Sie eine leere Zeile am Ende hinzu.
AusdrĂŒcke visuell erstellen
Das Auswendiglernen der Syntax funktioniert fĂŒr gĂ€ngige Muster, aber komplexe ZeitplĂ€ne lassen sich visuell einfacher erstellen. Der Cron-Ausdruck-Builder auf alltools.one ermöglicht:
- Werte fĂŒr jedes Feld ĂŒber Dropdowns auswĂ€hlen
- Eine menschenlesbare Beschreibung des Zeitplans sehen
- Bevorstehende AusfĂŒhrungszeiten vorschauen
- Den fertigen Ausdruck mit einem Klick kopieren
Er lĂ€uft vollstĂ€ndig in Ihrem Browser â keine Daten werden an einen Server gesendet.
Schnellreferenzkarte
Kopieren Sie diesen Block in Ihre Projektdokumentation oder Team-Wiki:
# ââââââ Min (0-59)
# â ââââââ Stunde (0-23)
# â â ââââââ Tag des Monats (1-31)
# â â â ââââââ Monat (1-12)
# â â â â ââââââ Wochentag (0-7, So=0 oder 7)
# â â â â â
# * * * * *
*/5 * * * * # Alle 5 Minuten
0 * * * * # Jede Stunde
0 0 * * * # TĂ€glich um Mitternacht
0 9 * * 1-5 # Werktags um 9 Uhr
0 0 1 * * # Erster des Monats
*/15 9-17 * * 1-5 # Alle 15 Min, GeschÀftszeiten
WeiterfĂŒhrende LektĂŒre
- Unix-Zeitstempel erklĂ€rt â Epoch-Zeit und Zeitzonen-Konvertierungen verstehen
- YAML fĂŒr Kubernetes â CronJobs und andere Kubernetes-Ressourcen konfigurieren
- YAML fĂŒr Docker Compose â Container in Compose-Setups planen
Bereit, Ihren nĂ€chsten Cron-Ausdruck zu erstellen? Ăffnen Sie den Cron-Ausdruck-Builder und legen Sie Ihren Zeitplan beim ersten Mal richtig fest.