Einen Cron-Ausdruck erstellen
- Dashboard
- Dokumentation
- API
Warum ein visueller Cron-Builder?
Ein Cron-Ausdruck umfasst fünf Felder und ist dennoch eine der häufigsten Fehlerquellen in
der Produktion. Wie oft hat ein Entwickler 0 0 * * 1 geschrieben in der Annahme, dies bedeute "jeden
Montag", ohne sich zu erinnern, dass 1 je nach Implementierung Sonntag bedeuten kann? Wie oft
wurden */15 und 15 verwechselt? Der Cron-Builder deckt dieses
Bedürfnis: einen Crontab-Ausdruck visuell zusammenzustellen, aus gängigen Voreinstellungen
oder aus einzelnen Feldern, und den endgültigen Ausdruck zu erhalten, der bereit ist, in eine Linux-Crontab,
einen Kubernetes CronJob oder einen GitHub-Actions-Zeitplan eingefügt zu werden.
Das Tool ist das Gegenstück zu unserem Cron-Decoder: Während der Konverter einen Ausdruck entgegennimmt und die nächsten Ausführungen abrollt, nimmt der Builder menschliche Entscheidungen entgegen und erzeugt den entsprechenden Cron-Ausdruck.
Wie es funktioniert
Die grafische Oberfläche bietet zwei komplementäre Kompositionsmodi:
- Preset-Modus: ein Frequenzwähler (every minute, every hour, every day, every week, every month, every year, custom), der sofort einen gültigen Cron-Ausdruck erzeugt.
- Feldmodus: fünf editierbare Felder (Minute, Stunde, Tag des Monats, Monat, Wochentag),
in denen Sie frei
*, eine ganze Zahl, einen Bereich1-5, eine Liste1,15,30oder einen Schritt*/15eingeben.
Der Builder aktualisiert den Ausdruck in Echtzeit und zeigt eine kurze menschliche Lesart ("täglich um 3 Uhr", "alle 15 Minuten") an, die als Sicherheit dient: Wenn der Satz nicht zu Ihrer Absicht passt, ist der Ausdruck wahrscheinlich falsch.
Die fünf Cron-Felder im Klartext
Ein Cron-Standardausdruck enthält fünf durch Leerzeichen getrennte Felder:
minute heure jour-du-mois mois jour-de-la-semaine
* * * * *
- Minute (0 bis 59);
- Stunde (0 bis 23);
- Tag des Monats (1 bis 31);
- Monat (1 bis 12 oder Abkürzungen Jan, Feb usw.);
- Wochentag (0 bis 7, wobei 0 und 7 in den meisten Implementierungen Sonntag bedeuten).
Jedes Feld akzeptiert mehrere Formen: * (alle Werte), eine bestimmte ganze Zahl
(5), eine Liste (1,3,5), einen Bereich (9-17), einen Schritt
(*/15 alle 15 Werte) oder eine Kombination (0-30/5).
Typische Anwendungsfälle
- Entwickler, der Cron lernt: visualisieren, wie die Felder interagieren, ohne in der Produktion einen falschen Ausdruck zu riskieren.
- Eiliger Sysadmin: in wenigen Sekunden einen Zeitplan für einen Linux-Cron, einen Kubernetes CronJob oder einen Ansible-Job erzeugen, ohne die Man-Page erneut zu lesen.
- Entwickler ohne POSIX-Erfahrung: einen gültigen Crontab-Ausdruck für Symfony Scheduler, Laravel Scheduler oder node-cron erzeugen, ohne die historische Syntax zu kennen.
- DevOps im Review: schnell einen Ausdruck in einer Pull Request prototypieren und dann mit dem Cron-Decoder validieren.
- Legacy-Migration: einen historischen Cron-Ausdruck über den Builder neu formulieren, um die Semantik vor der Übertragung an einen anderen Ort sicherzustellen.
Gängige Voreinstellungen
Die Auswahl einer Voreinstellung überschreibt die einzelnen Felder und erzeugt den entsprechenden Ausdruck:
- Jede Minute:
* * * * *. In der Produktion zu vermeiden, außer bei besonderem Bedarf. - Jede Stunde:
0 * * * *. Zu jedem Stundenbeginn. - Jeden Tag:
0 0 * * *. Um Mitternacht. - Jede Woche:
0 0 * * 0. Jeden Sonntag um Mitternacht. - Jeden Monat:
0 0 1 * *. Am 1. des Monats um Mitternacht. - Jedes Jahr:
0 0 1 1 *. Am 1. Januar um Mitternacht.
Gängige Muster, die man kennen sollte
| Ausdruck | Menschliche Lesart |
|---|---|
0 0 * * * |
Jeden Tag um Mitternacht |
*/15 * * * * |
Alle 15 Minuten |
0 9 * * 1-5 |
An jedem Werktag um 9 Uhr |
0 0 1 * * |
Am 1. des Monats um Mitternacht |
0 0 * * 0 |
Jeden Sonntag um Mitternacht |
*/5 9-17 * * 1-5 |
Alle 5 Minuten während der Bürozeiten |
0 3 * * * |
Jeden Tag um 3 Uhr morgens |
30 2 1,15 * * |
Am 1. und 15. des Monats um 2:30 Uhr |
Einen benutzerdefinierten Ausdruck zusammenstellen
Für spezifischere Fälle bietet der Assistent die fünf Felder zur freien Eingabe. Einige nützliche Beispiele:
- Jeden Tag um 3 Uhr morgens: minute=
0, heure=3, andere Felder*. - Alle 15 Minuten: minute=
*/15, andere Felder*. - Von Montag bis Freitag um 9 Uhr: minute=
0, heure=9, jour-de-la-semaine=1-5. - Am 1. und 15. des Monats um 12 Uhr: minute=
0, heure=12, jour-du-mois=1,15. - Alle 5 Minuten zwischen 9 und 17 Uhr: minute=
*/5, heure=9-17.
So verwenden Sie den Cron-Builder
- Wählen Sie eine Voreinstellung (every minute, every hour, every day, every week, every month, every year) aus, die der Basis Ihres Bedarfs entspricht.
- Verfeinern Sie bei Bedarf, indem Sie die fünf Felder (Minute, Stunde, Tag des Monats, Monat, Wochentag) direkt bearbeiten.
- Lesen Sie den vom Tool erzeugten menschlichen Satz, um die Absicht zu bestätigen.
- Kopieren Sie den erzeugten Cron-Ausdruck über die Kopierschaltfläche.
- Validieren Sie den Zeitplan mit unserem Cron-Decoder, der die nächsten tatsächlichen Ausführungsdaten berechnet.
- Fügen Sie den Ausdruck in Ihre Linux-Crontab, Ihren Kubernetes CronJob, Ihren Symfony Scheduler oder Ihren GitHub-Actions-Workflow ein.
Klassische Stolperfallen
- Tag des Monats und Wochentag kombiniert: Wenn beide nicht
*sind, unterscheidet sich das Verhalten je nach Implementierung. Linux/Vixie cron wendet ein ODER an; moderne Bibliotheken haben manchmal ein anderes Verhalten. Zu vermeiden. - Tag 1 = Montag oder Sonntag?: Je nach Land und Konvention. Die meisten Unix-Cron-Systeme betrachten Sonntag=0 und Samstag=6. Prüfen Sie Ihren Scheduler.
- Zeitzone: Ein Unix-Cron verwendet standardmäßig die Zeitzone des Servers. Anwendungs- scheduler (Symfony Scheduler, Quartz) erlauben häufig, eine dedizierte Zeitzone festzulegen.
- Fehlende Minute:
* * * * *führt den Job jede Minute aus, was selten das ist, was man will. Denken Sie daran, einen präzisen Trigger (0) für stündliche Aufgaben zu setzen.
Menschliche Lesart und Ausgabe
Zusätzlich zum Cron-Ausdruck bietet das Tool eine kurze menschliche Lesart ("jeden Tag um Mitternacht", "alle 5 Minuten"). Es ist eine Sicherung: Wenn der Satz nicht zu Ihrer Absicht passt, ist der Ausdruck wahrscheinlich falsch. Für einen komplexen Fall verwenden Sie anschließend unseren Cron-Decoder, um die nächsten tatsächlichen Ausführungsdaten zu berechnen.
Häufig gestellte Fragen
Kann ich den Ausdruck nach Nutzung der Oberfläche manuell bearbeiten?
Ja. Der Builder ist kein exklusiver Modus: Die fünf Felder bleiben jederzeit editierbar. Sie können mit einer Voreinstellung beginnen und dann ein Feld manuell anpassen, um einen maßgeschneiderten Crontab- Ausdruck zu erhalten. Die menschliche Lesart wird sofort neu berechnet.
Unterstützt das Tool das Quartz-Format mit 6 Feldern (mit Sekunden)?
Nein: Das 5-Feld-Format ist der Unix-Standard und die gemeinsame Basis der meisten Scheduler
(Linux crontab, Kubernetes CronJob, GitHub Actions, GitLab CI, Symfony Scheduler, Laravel Scheduler).
Quartz (Java) akzeptiert ein zusätzliches Feld für Sekunden und spezifische Symbole
(?, L, W, #), aber dieser Bedarf bleibt selten.
Wie wird die Zeitzone gehandhabt?
Der Builder erzeugt einen neutralen Cron-Ausdruck: Die ausführende Engine wendet ihre eigene
Zeitzone an. Auf einer Linux-Crontab ist es die TZ des Servers. Auf GitHub Actions ist es UTC. Auf
Kubernetes 1.27+ können Sie spec.timeZone im Manifest festlegen. Symfony Scheduler und
Quartz bieten eine dedizierte Zeitzone pro Aufgabe.
Wie kann ich meinen Ausdruck validieren, ohne ihn in der Produktion auszuführen?
Verwenden Sie unseren Cron-Decoder. Er berechnet die nächsten N Ausführungen ab dem aktuellen Zeitpunkt, ohne einen Job zu starten. Es ist die beste Methode, um zu bestätigen, dass ein Cron-Ausdruck tatsächlich zur geplanten Zeit feuert, bevor er bereitgestellt wird.
Wie ist der Bezug zu Symfony Scheduler?
Symfony Scheduler akzeptiert Cron-Ausdrücke mit 5 Feldern über Schedule::cron('0 3 * * *', ...)
. Der vom Builder erzeugte Ausdruck kann also so wie er ist eingefügt werden. Gleiches gilt für Laravel
Scheduler (->cron('...')), node-cron, Hangfire und Airflow.
Muss man den Befehl in der System-Crontab präfixieren?
Ja, in /etc/crontab ist ein Benutzer erforderlich (0 3 * * * www-data /usr/bin/php
...), während crontab -e pro Benutzer ihn weglässt. Der Ausdruck selbst bleibt
identisch.
Beispielanfrage
curl -X POST https://cdrn.fr/api/v1/tools/cron-builder/execute \
-H "Content-Type: application/json" \
-d '{"preset":"none","minute":"*","hour":"*","day_of_month":"*","month":"*","day_of_week":"*"}'
Eingabeschema
| Feld | Typ | Erforderlich | Standard |
|---|---|---|---|
preset |
choice (none, every_minute, hourly, daily, weekly, monthly, yearly) | – | none |
minute |
string | – | * |
hour |
string | – | * |
day_of_month |
string | – | * |
month |
string | – | * |
day_of_week |
string | – | * |
Endpunkte
GET https://cdrn.fr/api/v1/tools- listet alle verfügbaren Tools aufGET https://cdrn.fr/api/v1/tools/cron-builder- liefert das Schema dieses ToolsPOST https://cdrn.fr/api/v1/tools/cron-builder/execute- führt dieses Tool mit einem JSON-Payload aus