Een cron-expressie bouwen
- Dashboard
- Documentatie
- API
Waarom een visuele cron builder?
Een cron-expressie bestaat uit vijf velden en blijft toch een van de meest bug-genererende
in productie. Hoe vaak schreef een ontwikkelaar 0 0 * * 1 denkend "elke
maandag", zonder zich te herinneren dat 1 zondag kan betekenen afhankelijk van de implementaties? Hoe vaak
is */15 verward met 15? De cron builder beantwoordt deze
behoefte: een crontab-expressie visueel samenstellen, op basis van gangbare voorinstellingen
of individuele velden, en de uiteindelijke expressie verkrijgen klaar om te plakken in een Linux-crontab, een Kubernetes
CronJob of een GitHub Actions-schedule.
De tool is het omgekeerde van onze cron decoder: waar de converter een expressie neemt en de volgende uitvoeringen toont, neemt de builder menselijke keuzes en produceert de bijbehorende cron-expressie.
Hoe het werkt
De grafische interface biedt twee complementaire compositiemodi:
- Voorinstellingsmodus: een frequentieselector (every minute, every hour, every day, every week, every month, every year, custom) die onmiddellijk een geldige cron-expressie genereert.
- Velden-modus: vijf bewerkbare velden (minuut, uur, dag van de maand, maand, dag van de
week) waar u vrij
*, een geheel getal, een bereik1-5, een lijst1,15,30of een stap*/15invoert.
De builder werkt de expressie in real-time bij en toont een beknopte menselijke lezing ("elke dag om 3u", "elke 15 minuten") die als vangnet dient: als de zin niet bij uw bedoeling past, is de expressie waarschijnlijk verkeerd.
De vijf cron-velden, duidelijk
Een standaard cron-expressie bevat vijf velden gescheiden door spaties:
minute heure jour-du-mois mois jour-de-la-semaine
* * * * *
- minuut (0 tot 59);
- uur (0 tot 23);
- dag van de maand (1 tot 31);
- maand (1 tot 12 of afkortingen Jan, Feb, enz.);
- dag van de week (0 tot 7, waarbij 0 en 7 beide zondag betekenen in de meeste implementaties).
Elk veld accepteert meerdere vormen: * (alle waarden), een precies geheel getal
(5), een lijst (1,3,5), een bereik (9-17), een stap (*/15
elke 15 waarden), of een combinatie (0-30/5).
Typische gebruiksgevallen
- Ontwikkelaar die cron leert: visualiseren hoe elk veld interageert, zonder het risico van een verkeerde expressie in productie.
- Sysadmin in een haast: in enkele seconden een schedule genereren voor een Linux-cron, een Kubernetes CronJob of een Ansible-job zonder de man page opnieuw te lezen.
- Ontwikkelaar zonder POSIX-ervaring: een geldige crontab-expressie produceren voor Symfony Scheduler, Laravel Scheduler of node-cron zonder de historische syntaxis te kennen.
- DevOps in review: snel een expressie prototypen om voor te stellen in een pull request, en deze vervolgens valideren met de cron decoder.
- Legacy-migratie: een historische cron-expressie herformuleren door de builder te gebruiken om zeker te zijn van de semantiek voordat deze elders wordt gepusht.
Gangbare voorinstellingen
Een voorinstelling selecteren overschrijft de individuele velden en produceert de bijbehorende expressie:
- Elke minuut:
* * * * *. Te vermijden in productie behalve specifieke behoefte. - Elk uur:
0 * * * *. Aan het begin van elk uur. - Elke dag:
0 0 * * *. Om middernacht. - Elke week:
0 0 * * 0. Elke zondag om middernacht. - Elke maand:
0 0 1 * *. De 1e van de maand om middernacht. - Elk jaar:
0 0 1 1 *. De 1e januari om middernacht.
Gangbare patronen om te kennen
| Expressie | Menselijke lezing |
|---|---|
0 0 * * * |
Elke dag om middernacht |
*/15 * * * * |
Elke 15 minuten |
0 9 * * 1-5 |
Elke werkdag om 9u |
0 0 1 * * |
De 1e van de maand om middernacht |
0 0 * * 0 |
Elke zondag om middernacht |
*/5 9-17 * * 1-5 |
Elke 5 minuten tijdens werkuren |
0 3 * * * |
Elke dag om 3u 's nachts |
30 2 1,15 * * |
De 1e en de 15e van de maand om 2u30 |
Een aangepaste expressie samenstellen
Voor specifiekere gevallen biedt de assistent de vijf velden in vrije invoer. Enkele nuttige voorbeelden:
- Elke dag om 3u 's nachts: minuut=
0, uur=3, andere velden*. - Elke 15 minuten: minuut=
*/15, andere velden*. - Van maandag tot vrijdag om 9u: minuut=
0, uur=9, dag-van-de-week=1-5. - Elke 1e en 15e van de maand om 12u: minuut=
0, uur=12, dag-van-de-maand=1,15. - Elke 5 minuten tussen 9u en 17u: minuut=
*/5, uur=9-17.
Hoe u de cron builder gebruikt
- Kies een voorinstelling (every minute, every hour, every day, every week, every month, every year) die overeenkomt met de basis van uw behoefte.
- Verfijn indien nodig door de vijf velden rechtstreeks te bewerken (minuut, uur, dag van de maand, maand, dag van de week).
- Lees de door de tool gegenereerde menselijke zin om de bedoeling te bevestigen.
- Kopieer de geproduceerde cron-expressie via de kopieerknop.
- Valideer het schedule met onze cron decoder die de volgende werkelijke uitvoeringsdata berekent.
- Plak de expressie in uw Linux-crontab, uw Kubernetes CronJob, uw Symfony Scheduler of uw GitHub Actions-workflow.
Klassieke valkuilen
- Dag van de maand en dag van de week gecombineerd: als beide niet
*zijn, verschilt het gedrag afhankelijk van de implementaties. Linux/Vixie cron past een OF toe; de moderne bibliotheken hebben soms ander gedrag. Te vermijden. - Dag 1 = maandag of zondag?: afhankelijk van het land en de conventie. De meeste cron Unix beschouwt zondag=0 en zaterdag=6. Controleer uw planner.
- Tijdzone: een Unix-cron gebruikt standaard de tijdzone van de server. De applicatieplanners (Symfony Scheduler, Quartz) staan vaak toe om een specifieke tijdzone vast te stellen.
- Ontbrekende minuut:
* * * * *voert de taak elke minuut uit, wat zelden is wat we willen. Denk eraan om een precieze trigger (0) in te stellen voor uurlijkse taken.
Menselijke lezing en uitvoer
Naast de cron-expressie biedt de tool een beknopte menselijke lezing ("elke dag om middernacht", "elke 5 minuten"). Het is een vangnet: als de zin niet overeenkomt met uw bedoeling, is de expressie waarschijnlijk verkeerd. Voor een complexe zaak gebruikt u vervolgens onze cron decoder om de volgende werkelijke uitvoeringsdata te berekenen.
Veelgestelde vragen
Kan ik de expressie handmatig bewerken na gebruik van de interface?
Ja. De builder is geen exclusieve modus: de vijf velden blijven op elk moment bewerkbaar. U kunt vertrekken vanuit een voorinstelling en vervolgens handmatig een veld aanpassen om een aangepaste crontab-expressie te verkrijgen. De menselijke lezing wordt onmiddellijk opnieuw berekend.
Ondersteunt de tool het Quartz-formaat met 6 velden (met seconden)?
Nee: het 5-veldenformaat is de Unix-standaard en de gemeenschappelijke basis voor de meeste planners
(Linux crontab, Kubernetes CronJob, GitHub Actions, GitLab CI, Symfony Scheduler, Laravel Scheduler).
Quartz (Java) accepteert een extra veld voor seconden en specifieke symbolen
(?, L, W, #), maar deze behoefte blijft zeldzaam.
Hoe wordt de tijdzone beheerd?
De builder produceert een neutrale cron-expressie: het is de engine die de taak uitvoert die zijn
tijdzone toepast. Op een Linux-crontab is dat de TZ van de server. Op GitHub Actions is dat UTC. Op
Kubernetes 1.27+ kunt u spec.timeZone instellen in het manifest. Symfony Scheduler en
Quartz bieden een specifieke tijdzone per taak.
Hoe valideer ik mijn expressie zonder deze in productie uit te voeren?
Gebruik onze cron decoder. Het berekent de N volgende uitvoeringen vanaf het huidige moment, zonder enige taak te starten. Het is de beste manier om te bevestigen dat een cron-expressie goed afgaat op het verwachte uur voordat u deze implementeert.
Wat is de relatie met Symfony Scheduler?
Symfony Scheduler accepteert cron-expressies met 5 velden via Schedule::cron('0 3 * * *', ...)
. De expressie geproduceerd door de builder kan dus zo geplakt worden. Idem voor Laravel
Scheduler (->cron('...')), node-cron, Hangfire en Airflow.
Moet u het commando voorvoegen in de systeem-crontab?
Ja, in /etc/crontab hebt u een gebruiker nodig (0 3 * * * www-data /usr/bin/php
...), terwijl crontab -e per gebruiker dit weglaat. De expressie zelf blijft
identiek.
Voorbeeldverzoek
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":"*"}'
Invoerschema
| Veld | Type | Vereist | Standaard |
|---|---|---|---|
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 | – | * |
Endpoints
GET https://cdrn.fr/api/v1/tools- toont alle beschikbare toolsGET https://cdrn.fr/api/v1/tools/cron-builder- geeft het schema van deze tool terugPOST https://cdrn.fr/api/v1/tools/cron-builder/execute- voert deze tool uit met een JSON-payload