De volgende uitvoeringen van een cron-expressie berekenen
- Dashboard
- Documentatie
- API
Wat is een cron-expressie?
Een cron-expressie is een korte tekenreeks die een herhaling in de tijd beschrijft. Het
van Unix geërfde formaat bestaat uit vijf velden gescheiden door spaties: minuut, uur,
dag van de maand, maand en dag van de week. Deze syntaxis is geboren met de
cron-daemon van Brian Kernighan in de jaren 1970, vervolgens veralgemeend door de Vixie cron
(1987) overgenomen door alle moderne Linux- en macOS-distributies. Vandaag wordt dezelfde syntaxis
teruggevonden in de meerderheid van cloudplanners (AWS EventBridge, GCP Cloud Scheduler, Azure Logic
Apps) en CI/CD (GitHub Actions, GitLab CI, Jenkins).
┌──── minute (0-59)
│ ┌── heure (0-23)
│ │ ┌── jour du mois (1-31)
│ │ │ ┌── mois (1-12 ou JAN-DEC)
│ │ │ │ ┌── jour de la semaine (0-7 ou SUN-SAT, 0 et 7 = dimanche)
│ │ │ │ │
* * * * *
Een goed gevormde cron-expressie definieert dus een precieze cron schedule: elk veld kan een vaste waarde, een bereik, een lijst, een stap of een asterisk zijn die alles matcht. De compactheid van de crontab-expressie is zijn kracht, maar het is ook wat een cron decoder onmisbaar maakt om de bedoeling visueel te valideren. Dat is het hele doel van deze cron converter: een leesbare cron-uitleg produceren, plus de lijst van volgende uitvoeringen.
Anatomie van een cron-expressie
De vijf velden delen een gemeenschappelijke grammatica. Dit zijn de aanvaarde grenzen voor elke kolom van een standaard crontab-expressie:
- Minuut:
0-59. - Uur:
0-23, 24-uursformaat. - Dag van de maand:
1-31. - Maand:
1-12of de tekstuele afkortingenJAN,FEB,MAR,APR,MAY,JUN,JUL,AUG,SEP,OCT,NOV,DEC. - Dag van de week:
0-7waarbij0en7beide zondag vertegenwoordigen, of de afkortingenSUN,MON,TUE,WED,THU,FRI,SAT.
Speciale tekens gedeeld door de vijf velden:
*: any value, matcht alle toegestane waarden van het veld.,: discrete lijst, bijvoorbeeld1,15,30in het minuutveld.-: inclusief bereik, bijvoorbeeld9-17voor kantooruren./: stap (step), bijvoorbeeld*/15= elke 15 eenheden, of0-30/5= elke 5 minuten tussen 0 en 30.
Quartz-extensies (Java, AWS EventBridge, Spring): de grammatica gaat naar 6 of 7
velden met een seconden-kolom vooraan (0-59) en soms een jaar-kolom
achteraan (1970-2099). Quartz introduceert ook ? (no specific
value, om dag-van-de-maand en dag-van-de-week te ontkoppelen), L (last: laatste dag van de maand,
of laatste vrijdag met 5L), W (dichtstbijzijnde werkdag) en #
(N-de dag van de week van de maand, bijvoorbeeld 2#3 voor de 3e maandag). Een Quartz-expressie
is over het algemeen niet compatibel met een UNIX-crontab en vice versa: het is de belangrijkste
bron van fouten wanneer een cron-expressie van het ene platform naar het andere wordt gekopieerd.
# UNIX / Vixie cron (5 champs)
0 9 * * 1-5
# Quartz (6 champs avec secondes)
0 0 9 ? * MON-FRI
# Quartz (7 champs avec année)
0 0 9 ? * MON-FRI 2026
Waarom een cron-expressie decoderen?
0 0 * * * lezen is snel. */7 2-5 1,15 * 1-5 lezen is duidelijk minder zo. Wanneer
een expressie buiten het triviale gaat, stijgt het risico op interpretatiefouten en wordt de cron decode
een volwaardige reviewstap.
- Productie-debug: begrijpen waarom een taak om 03u17 is geactiveerd en niet om 03u00, of een overlap tussen twee taken identificeren.
- Code review: valideren dat een in pull request gepushte planner doet wat de auteur beweert, zonder de semantiek van elk symbool te moeten onthouden.
- Audit van planners: de cron jobs Linux doornemen in
/etc/crontaben/etc/cron.d/, de Jenkins-triggers, despec.schedulevan Kubernetes CronJob, de regels AWS EventBridge en de GCP Cloud Scheduler-taken. - Legacy-migratie: een historische
/etc/crontabovernemen zonder documentatie en de taakkartografie reconstrueren voor een infrastructuurwijziging. - Onboarding: een nieuwe ontwikkelaar toelaten om een crontab te herlezen zonder van de ene dag op de andere alle speciale tekens te moeten leren.
Hoe u de cron decoder gebruikt
De te volgen stappen om een crontab-expressie met de tool te decoderen:
- Plak uw cron-expressie in het invoerveld (5 velden gescheiden door spaties).
- Geef het aantal te berekenen volgende uitvoeringen aan.
- Klik op convert om de cron decode te starten: de tool geeft een menselijke zin terug die de activering uitlegt, plus de gedateerde lijst van volgende uitvoeringen.
- Controleer visueel of de data overeenkomen met uw bedoeling (uur, dag, frequentie).
- Kopieer de uitvoer via de kopieerknop om deze in een ticket, een PR of technische documentatie te plakken.
De tool beperkt zich niet tot een syntactische parsing: hij biedt een cron-uitleg in natuurlijke taal, wat hem zowel een cron decoder als een planningsvalidator maakt.
Klassieke voorbeelden van cron-expressies
De onderstaande patronen dekken de essentie van cron schedules die in productie worden tegengekomen. Ze zijn allemaal geldig op Linux crontab, Kubernetes CronJob, GitHub Actions en de meerderheid van applicatieplanners.
| Expressie | Menselijke lezing |
|---|---|
* * * * * |
Elke minuut |
0 * * * * |
Elk uur op de klok |
0 0 * * * |
Elke dag om middernacht |
0 0 * * 0 |
Elke zondag om middernacht |
*/15 * * * * |
Elke 15 minuten |
0 9 * * 1-5 |
9u00 van maandag tot vrijdag |
0 0 1 * * |
De 1e van elke maand om middernacht |
0 0,12 * * * |
Om middernacht en middag elke dag |
*/5 9-17 * * 1-5 |
Elke 5 minuten tijdens werkuren |
30 2 1,15 * * |
De 1e en de 15e van de maand om 2u30 |
Om een cron-taak uit te voeren op een Linux-server, bewerkt u de gebruikers-crontab vanuit de shell:
# éditer la crontab de l'utilisateur courant
$ crontab -e
# lister les tâches existantes
$ crontab -l
# exemple de ligne ajoutée : sauvegarde quotidienne à 3h
0 3 * * * /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1
Voorbeeld van uitvoer van de cron converter voor */5 * * * *:
2026-05-05 00:00:00
2026-05-05 00:05:00
2026-05-05 00:10:00
2026-05-05 00:15:00
2026-05-05 00:20:00
...
Veelgestelde vragen over de cron decoder
Wat is het verschil tussen UNIX-cron en Quartz?
UNIX/Vixie cron gebruikt 5 velden (minuut tot dag-van-de-week), zonder secondenprecisie, en heeft geen
native notie van "laatste dag van de maand". Quartz (Java, Spring, AWS EventBridge) voegt een
seconden-kolom toe vooraan, soms een jaar-kolom achteraan, en meerdere symbolen
(?, L, W, #) afwezig in de Linux-crontab. Een
Quartz cron-expressie met 6 velden is dus niet direct overdraagbaar naar
/etc/crontab en omgekeerd. Onze cron decoder richt zich op het 5-veldenformaat,
dat de meerderheid van planners dekt.
Hoe voer ik een cron-taak elke 5 minuten uit?
Met de stap / op het minuutveld:
*/5 * * * * /usr/local/bin/check-health.sh
Deze crontab-expressie activeert het script op minuten 0, 5, 10, 15... van elk
uur, elke dag. Om te beperken tot werkuren van maandag tot vrijdag, voeg de beperkingen
toe op de velden uur en dag-van-de-week: */5 9-17 * * 1-5.
Wat betekent de asterisk (*) in een cron-expressie?
De asterisk betekent any value: hij matcht alle toegestane waarden van het veld. In
0 0 * * * betekenen de drie sterren "elke dag van de maand, elke
maand, elke dag van de week". Gecombineerd met de eerste twee velden vastgesteld op 0, krijgen we
"elke dag om middernacht". De ster kan ook gecombineerd worden met een stap: */15 in
minuut = elke 15 minuten.
Heeft crontab een tijdzone?
Standaard de tijdzone van de server. Op een Linux-crontab is dat de systeem-TZ (vaak UTC op VPS en
containers). GitHub Actions forceert UTC. Kubernetes CronJob gebruikt de tijdzone van de controller,
configureerbaar via spec.timeZone sinds 1.27. AWS EventBridge evalueert de expressies in
UTC. De applicatieplanners (Symfony Scheduler, Quartz, Airflow) staan vaak toe om een
specifieke tijdzone per taak in te stellen. In geval van twijfel, controleer date op de doelserver en
vergelijk met de uitvoer van de cron converter.
Cron job vs commando at: welke kiezen?
cron dient om een terugkerende taak volgens een planning uit te voeren. at dient
om een commando één keer op een gegeven moment uit te voeren. Voor een dagelijkse back-up,
een logrotatie of een regelmatige API-oproep, gebruik cron. Om een eenmalige bewerking uit te stellen
("herstart deze deployment om 22u vanavond"), gebruik at:
$ echo "/usr/local/bin/deploy.sh" | at 22:00
Hoe test ik een cron-expressie zonder deze te activeren?
Dat is precies de rol van deze cron converter: hij berekent de N volgende
uitvoeringen vanaf het huidige moment, zonder enige taak te starten. U ziet onmiddellijk of uw
crontab-expressie om 03u00 afgaat zoals gepland of bij toeval om 03u17. Om verder
te gaan voor het installeren van de taak, kunt u ook het script alleen testen (bash -x script.sh)
en de syntaxis van een crontab-bestand verifiëren met crontab -T bestand op de distributies
die het ondersteunen.
Wat gebeurt er als dag-van-de-maand en dag-van-de-week beide zijn vastgesteld?
Op Vixie cron (Linux) is de regel een logische OF: de taak gaat af als een van
de twee velden matcht. Dat is contra-intuïtief en een bron van bugs. Quartz gebruikt een
EN, vandaar de introductie van het symbool ? om expliciet "geen
beperking" te signaleren. In het algemeen, stel slechts één van de twee velden vast.
Voorbeeldverzoek
curl -X POST https://cdrn.fr/api/v1/tools/cron-converter/execute \
-H "Content-Type: application/json" \
-d '{"cron":"...","number_next_date":1}'
Invoerschema
| Veld | Type | Vereist | Standaard |
|---|---|---|---|
cron |
string | ✓ | – |
number_next_date |
integer | ✓ | – |
Endpoints
GET https://cdrn.fr/api/v1/tools- toont alle beschikbare toolsGET https://cdrn.fr/api/v1/tools/cron-converter- geeft het schema van deze tool terugPOST https://cdrn.fr/api/v1/tools/cron-converter/execute- voert deze tool uit met een JSON-payload