Die fünf Felder
Ein Cron-Ausdruck besteht aus fünf durch Leerzeichen getrennten Feldern, die einem Zeitplaner sagen, wann eine Aufgabe laufen soll. Der Reihe nach, von links nach rechts:
| Minute | 0-59 |
| Stunde | 0-23 |
| Tag des Monats | 1-31 |
| Monat | 1-12 |
| Wochentag | 0-6 (Sonntag = 0) |
Die Aufgabe läuft, wenn die aktuelle Zeit zu jedem Feld passt.
Sonderzeichen
*jeder Wert.,eine Liste:1,15ist der 1. und der 15.-ein Bereich:1-5ist im letzten Feld Montag bis Freitag./eine Schrittweite:*/10im Minutenfeld ist alle 10 Minuten.
Häufige Zeitpläne
*/5 * * * * | Alle 5 Minuten |
0 * * * * | Jede volle Stunde |
0 0 * * * | Jeden Tag um Mitternacht |
30 8 * * 1-5 | Werktags um 08:30 |
0 0 1 * * | Um Mitternacht am 1. jedes Monats |
0 3 * * 0 | Jeden Sonntag um 03:00 |
Füge einen beliebigen Ausdruck in Cron-Ausdruck erklären ein, um ihn in Worten zu lesen und seine nächsten Ausführungen zu sehen.
Typische Stolperfallen
- Zeitzone: Cron nutzt die Uhr des Servers, die oft auf UTC steht.
- Tag des Monats und Wochentag zusammen: Sind beide gesetzt, läuft die Aufgabe, wenn einer von beiden passt, nicht beide.
- Sekunden: Standard-Cron hat kein Sekundenfeld. Manche Systeme wie Quartz und Spring fügen am Anfang eines hinzu, dann sind es sechs Felder.
Ausdrücke, die nicht tun, was sie scheinen
| Ausdruck | Gemeint | Läuft tatsächlich |
|---|---|---|
0 9 1-7 * 1 | 09:00 am ersten Montag | 09:00 an jedem der Tage 1 bis 7 und an jedem Montag |
*/15 9-17 * * 1-5 | Alle 15 Minuten von 9 bis 17 Uhr | 09:00 bis 17:45 an Werktagen, einschließlich der Stunde ab 17 Uhr |
0 0 31 * * | Der letzte Tag im Monat | Nur in den sieben Monaten mit 31 Tagen |
0 0 29 2 * | Einmal im Jahr | Nur in Schaltjahren |
Für den ersten Montag lass den Job an den Tagen 1 bis 7 laufen und prüfe den Wochentag im Skript.
Kurzformen
Viele cron-Versionen kennen Kurznamen: @hourly, @daily, @weekly, @monthly, @yearly und @reboot, das einmal beim Start des Rechners läuft.
Sommerzeit
Auf einem Server mit Ortszeit kann ein Job zwischen 01:00 und 03:00 in der Nacht der Zeitumstellung ausfallen oder doppelt laufen, je nach cron-Version. Lege wichtige Jobs außerhalb dieser Stunden, oder betreibe den Server in UTC.