Der Cron Ausdruck 0 0 * * 1 löst jeden Montag um Mitternacht aus. Erfahre mehr über die Wochentagsnummerierung, den MON-Alias und die ODER-Logik von dom/dow.
⏰At 12:00 AM, only on Monday
*Beliebiger Wert,Listentrennzeichen-Bereich/Schritt1-5Bereich 1 bis 5*/15Alle 15 EinheitenDer Cron Ausdruck 0 0 * * 1 löst um Mitternacht jeden Montag aus. Felder: Minute (0), Stunde (0), Tag des Monats (*), Monat (*), Wochentag (1). Montag ist Tag 1 im POSIX Cron. Diese Nummerierung verwirrt Entwickler, die von ISO 8601 oder Programmiersprachen kommen, die Tage anders nummerieren. Überprüfe die folgende Tabelle, bevor du einen wöchentlichen Zeitplan schreibst.
Das Wochentagsfeld verwendet ganzzahlige Werte von 0 bis 7:
| Nummer | Tag |
|---|---|
| 0 | Sonntag |
| 1 | Montag |
| 2 | Dienstag |
| 3 | Mittwoch |
| 4 | Donnerstag |
| 5 | Freitag |
| 6 | Samstag |
| 7 | Sonntag (Alias für 0) |
Sonntag erscheint zweimal (als 0 und 7), um Eins-fehler in Bereichsausdrücken zu reduzieren. 1-7 würde sonst Sonntag verpassen, wenn 7 nicht verfügbar wäre. In der Praxis benötigst du diesen Randfall selten, aber es ist gut zu wissen, dass beide Werte gültig sind.
Montag ist immer 1. Dies unterscheidet sich von ISO 8601 (das Montag als Wochenbeginn behandelt, ihn aber ebenfalls als 1 nummeriert), gerät aber mit einigen Programmiersprachen und Bibliotheken in Konflikt, die Tage anders nummerieren. Beim Schreiben von crontab Ausdrücken beziehe dich immer auf diese Tabelle, nicht auf dein mentales Modell aus einem anderen Tool.
0 0 * * MON # identisch zu 0 0 * * 1
Benannte Tagesaliase (MON, TUE, WED, THU, FRI, SAT, SUN) funktionieren in den meisten Produktions Cron Implementierungen. Sie funktionieren in Listen und Bereichen:
0 0 * * MON,WED # Montag und Mittwoch
0 0 * * MON-FRI # Montag bis Freitag
0 9 * * MON,THU # 9 Uhr am Montag und Donnerstag
Wenn du crontabs schreibst, die über verschiedene Systeme kopiert oder von Konfigurationsmanagement Tools bereitgestellt werden, sind Zahlen sicherer. Benannte Aliase sind eine Bequemlichkeit, kein Standard.
Montag als Auslösepunkt passt natürlich dazu, wie die meisten Teams ihre Arbeitswoche strukturieren. Häufige reale Verwendungen:
Generiere und verteile wöchentliche Metriken, KPI Zusammenfassungen oder Betriebsübersichten jeden Montagmorgen, damit sie vor dem Standup bereit sind. Ein Job um 0 6 * * 1 stellt sicher, dass der Bericht erstellt und zugestellt ist, bevor jemand seinen Laptop öffnet.
Für Teams mit zweiwöchigen Sprint Zyklen, bei denen Sprints montags beginnen, kann ein Montags Cron Zähler zurücksetzen, Sprint Planungsvorlagen generieren, Tracking Tickets erstellen oder Daten aus Projektmanagement Tools in interne Dashboards synchronisieren.
Eine übliche Backup Strategie: tägliche inkrementelle Backups mit wöchentlichen Vollbackups am Montag. Das montägliche Vollbackup markiert die Grenze der Inkremente der Vorwoche und macht Wiederherstellungsfenster vorhersagbar.
Automatisierte E-Mail oder Slack Newsletter Digests (neue Tool Veröffentlichungen, Engineering Blog Zusammenfassungen, Incident Postmortems) werden oft für Montagmorgen geplant, damit Empfänger sie zu Wochenbeginn sehen.
Wenn du Caches hast, die über das Wochenende veralten (Benutzerverhaltensmodelle, Empfehlungsmaschinen, vorberechnete Berichte), stellt ein montäglicher Vorwärmjob sicher, dass das System bereit ist, bevor der Verkehr ansteigt.
0 0 * * 1 # Mitternacht Montag (Start des Montags)
0 6 * * 1 # 6 Uhr Montag, Job läuft, wird vor dem Standup fertig
0 9 * * 1 # 9 Uhr Montag, Morgenauslöser
0 17 * * 1 # 17 Uhr Montag, Ende des ersten Geschäftstages der Woche
30 23 * * 1 # 23:30 Uhr Montag, späte Bereinigung vor Dienstag
Für Jobs, die vor einer bestimmten Zeit abgeschlossen sein müssen, berücksichtige die Jobdauer. Wenn dein Montag 9 Uhr Bericht 90 Minuten zur Generierung braucht, plane ihn stattdessen um 6 oder 7 Uhr.
Das Wochentagsfeld akzeptiert kommagetrennte Werte für nicht aufeinanderfolgende Tage:
0 0 * * 1,3,5 # Montag, Mittwoch, Freitag, jeder zweite Werktag
0 0 * * 1,4 # Montag und Donnerstag, zweimal pro Woche
0 9 * * 1,2,3,4,5 # äquivalent zu 0 9 * * 1-5 (Werktage), als Liste geschrieben
Für einen Job, der montags und auch am 1. jedes Monats laufen soll, beachte das dom/dow Vereinigungsverhalten (siehe nächster Abschnitt).
Wenn du einen Nicht-* Wert sowohl im Tag des Monats als auch im Wochentagsfeld angibst, löst Cron auf der Vereinigungsmenge beider Einschränkungen aus:
0 0 1 * 1 # löst am 1. jedes Monats UND jeden Montag aus
Dies ist nicht “erster Montag des Monats.” Dafür wäre Skriptlogik erforderlich. Der obige Ausdruck läuft am 1. unabhängig vom Wochentag und läuft auch jeden Montag unabhängig vom Datum. Wenn du nur Montage möchtest, behalte den Tag des Monats als *.
Für den Kontext beim Schreiben kombinierter Ausdrücke:
0 0 * * 1 # jeden Montag
0 0 * * 2 # jeden Dienstag
0 0 * * 3 # jeden Mittwoch
0 0 * * 4 # jeden Donnerstag
0 0 * * 5 # jeden Freitag
0 0 * * 6 # jeden Samstag
0 0 * * 0 # jeden Sonntag
Die häufigsten Paarungen für nicht tägliche wiederkehrende Jobs sind nur Montag (wöchentlich), Montag+Donnerstag (zweimal pro Woche) und Montag+Mittwoch+Freitag (dreimal pro Woche).
from croniter import croniter
from datetime import datetime
cron = croniter("0 0 * * 1", datetime.now())
for _ in range(5):
print(cron.get_next(datetime))
Jede Ausgabe sollte ein Montag um 00:00:00 sein. Verwende den Cron Builder auf dieser Seite, um die nächsten 10 Laufzeiten zu sehen und den Zeitplan vor der Bereitstellung zu bestätigen.
Nothing you paste leaves this tab. Every tool runs entirely in your browser — no upload, no server, no account.