Cron-Ausdruck-Syntax: Ein vollständiger Leitfaden mit Beispielen
Cron-Ausdruck-Syntax
Cron ist der Standard-Job-Scheduler auf Unix-ähnlichen Systemen. Jeder Cron-Ausdruck definiert einen Zeitplan in einer kompakten Zeichenkette, die angibt, wann ein Befehl ausgeführt werden soll. Das Verständnis der Syntax ist unerlässlich für die Automatisierung von Backups, Log-Rotation und Wartungsaufgaben.
Das 5-Felder-Format
Ein standardmäßiger Cron-Ausdruck hat fünf Felder, die durch Leerzeichen getrennt sind:
* * * * *
| | | | |
| | | | +----- Day of the Week (0-7, 0 and 7 = Sunday)
| | | +------- Month (1-12)
| | +--------- Day of the Month (1-31)
| +----------- Hour (0-23)
+------------- Minute (0-59)
Felddetails
| Feld | Bereich | Sonderzeichen | Beispiel |
|-------|-------|-------------------|---------|
| Minute | 0-59 | , - * / | 30 = um Minute 30 |
| Stunde | 0-23 | , - * / | 6 = um 6 Uhr |
| Tag des Monats | 1-31 | , - * / | 15 = am 15. |
| Monat | 1-12 | , - * / | 6 = im Juni |
| Tag der Woche | 0-7 | , - * / | 0 = am Sonntag |
Die Minute steuert die genaue Ausführungsminute: 30 * * * * wird in Minute 30 jeder Stunde ausgeführt. Die Stunde legt die Tageszeit fest: 0 6 * * * wird täglich um 6:00 Uhr ausgeführt. Der Tag des Monats schränkt auf bestimmte Kalenderdaten ein: 0 0 15 * * wird am 15. jedes Monats um Mitternacht ausgeführt. Der Monat begrenzt die Ausführung auf bestimmte Monate: 0 0 1 6 * wird am 1. Juni ausgeführt. Der Tag der Woche steuert, an welchen Wochentagen: 0 8 * * 1-5 wird montags bis freitags um 8 Uhr ausgeführt.
Wichtig: Die Tage 29-31 werden nur in Monaten ausgeführt, die diese Daten haben. In kürzeren Monaten werden diese Werte stillschweigend übersprungen.
Sonderzeichen
| Zeichen | Name | Zweck | Beispiel |
|------|------|---------|---------|
| * | Sternchen | Alle möglichen Werte | * in Minute = jede Minute |
| , | Komma | Liste von Werten | 1,15,30 = Minuten 1, 15, 30 |
| - | Bindestrich | Bereich | 9-17 = Stunden 9 bis 17 |
| / | Schrägstrich | Schrittwerte | */5 = alle 5 Minuten |
Schrittwerte mit Schrägstrich
Der Schrägstrich drückt "alle N Einheiten" aus:
# Every 5 minutes
*/5 * * * *
# Every 2 hours
0 */2 * * *
# Every 15 minutes during business hours
*/15 9-17 * * *
Häufige Cron-Zeitplan-Muster
| Zeitplan | Ausdruck | Beschreibung |
|----------|------------|-------------|
| Jede Minute | * * * * * | Wird 1.440-mal pro Tag ausgeführt |
| Alle 5 Minuten | */5 * * * * | Health-Checks, Monitoring |
| Jede Stunde | 0 * * * * | Zu jeder vollen Stunde |
| Zweimal täglich | 0 6,18 * * * | 6 Uhr und 18 Uhr |
| Täglich um Mitternacht | 0 0 * * * | Klassische Wartung |
| Wöchentlich sonntags | 0 0 * * 0 | Wöchentliche Wartung |
| 1. des Monats | 0 0 1 * * | Monatliche Berichte |
| Werktage 9 Uhr | 0 9 * * 1-5 | Beginn der Geschäftszeiten |
Nicht standardmäßige Abkürzungen
Einige Cron-Implementierungen unterstützen benannte Abkürzungen: @yearly (1. Januar), @monthly (1. des Monats), @weekly (Sonntag), @daily (Mitternacht), @hourly und @reboot (wird einmal beim Systemstart ausgeführt). Unterstützt von Vixie cron, cronie und systemd-Timern.
Häufige Fehler
- Das gleichzeitige Festlegen von Tag des Monats und Tag der Woche erzeugt eine ODER-Bedingung — der Job wird ausgeführt, wenn eines von beiden zutrifft, was selten die Absicht ist.
- Cron verwendet die Systemzeitzone. Jobs in der Nähe von Sommerzeitumstellungen können doppelt oder gar nicht ausgeführt werden.
- Zähle immer fünf Felder. Vier Felder sind ungültig; sechs Felder erfordern erweiterte Cron-Syntax.
Teste deine Cron-Ausdrücke
Verwende den Cron-Expression-Validator, um die Syntax zu prüfen, kommende Ausführungszeiten vorzuzeigen und Fehler zu erkennen, bevor sie die Produktion beeinträchtigen. Eine Dreißig-Sekunden-Validierungsprüfung verhindert stille Zeitplanungsfehler.