Cron-Ausdrücke erklärt: 15 echte Zeitpläne und die Zeitzonen-Fallen
Cron-Syntax passt in eine Zeile und bringt trotzdem früher oder später jeden ins Stolpern – meistens um 2 Uhr nachts in der Nacht, in der die Sommerzeit umgestellt wird. Hier siehst du, wie die fünf Felder funktionieren, eine Auswahl an Zeitplänen zum Kopieren und die Fallen, die du kennen solltest.
Die fünf Felder
┌──────── minute (0–59)
│ ┌────── hour (0–23)
│ │ ┌──── day of month (1–31)
│ │ │ ┌── month (1–12)
│ │ │ │ ┌ day of week (0–6, Sunday = 0)
* * * * *
Jedes Feld nimmt einen Wert (5), eine Liste (1,15), einen Bereich (1-5), eine Schrittweite (*/10) oder * für jeden Wert. Manche Systeme (Quartz, AWS EventBridge) ergänzen ein Sekunden- oder Jahresfeld – prüfe, welche Variante du schreibst.
Zeitpläne zum Kopieren
| Ausdruck | Läuft |
|---|---|
*/5 * * * * | Alle 5 Minuten |
0 * * * * | Jede Stunde, zur vollen Stunde |
15 */2 * * * | Um :15 alle 2 Stunden |
0 9 * * * | Jeden Tag um 09:00 |
30 2 * * * | Jeden Tag um 02:30 (siehe DST-Falle unten) |
0 9 * * 1-5 | Werktags um 09:00 |
0 18 * * 5 | Freitags um 18:00 |
0 0 * * 0 | Sonntags um Mitternacht |
0 0 1 * * | Am ersten Tag jedes Monats |
0 0 1 1 * | Einmal im Jahr, 1. Januar |
0 8 1,15 * * | Am 1. und 15. um 08:00 |
*/15 9-17 * * 1-5 | Alle 15 Minuten während der Bürozeiten |
0 0 * * 6,0 | Mitternacht am Wochenende |
0 3 * 1,4,7,10 * | Täglich um 03:00 im ersten Monat jedes Quartals |
0 12 * * * | Täglich mittags |
Lass dir jeden Ausdruck mit dem Cron Expression Generator in Klartext übersetzen oder neu erstellen; er zeigt dir außerdem die nächsten Ausführungszeiten.
Die Falle bei Tag des Monats vs. Wochentag
Wenn sowohl das Feld für den Tag des Monats als auch das für den Wochentag eingeschränkt sind, läuft Standard-Cron, sobald eine der beiden Bedingungen zutrifft – nicht beide. 0 9 13 * 5 läuft also am 13. jedes Monats und jeden Freitag, nicht nur an Freitagen, den 13. Um am letzten Werktag oder am ersten Montag zu laufen, plane den Job täglich und prüfe das Datum im Skript, oder nutze einen Scheduler mit Erweiterungen wie L und #.
Zeitzonen und Sommerzeit
- Server und CI laufen in UTC. GitHub-Actions-Zeitpläne, die meisten Container und Cloud-Scheduler verwenden UTC. 09:00 in New York ist im Winter
0 14 * * *und im Sommer0 13 * * *. Rechne mit dem Time Zone Converter um oder sieh dir mehrere Zonen gleichzeitig auf der World Clock an. - Jobs zwischen 01:00 und 03:00 Ortszeit sind riskant. Wenn die Uhr vorgestellt wird, existiert 02:30 nicht und der Job wird eventuell übersprungen; wird sie zurückgestellt, kann er doppelt laufen. Plane kritische Jobs außerhalb dieses Fensters oder lass den Scheduler in UTC laufen.
- GitHub-Actions-Zeitpläne können zu Stoßzeiten um einige Minuten verspätet starten und werden in Repositories ohne Aktivität für 60 Tage deaktiviert. Erstelle einen Workflow mit dem GitHub Actions Generator.