PK Systems PK Systems
Ontwikkelaarstools

Cron-expressie-generator & -uitlegger

Bouw cron-expressies visueel veld-voor-veld, of plak een bestaande om een eenvoudige uitleg en de volgende vijf runtimes te krijgen.

Cron-expressie-generator & -uitlegger

Cron-expressie

* * * * *

Pas een veld hierboven aan om de expressie te zien bijwerken.

Wat is een cron-expressie?

Een cron-expressie is een schema met vijf velden dat wordt gebruikt door Unix-achtige taakplanners, CI-systemen, Kubernetes CronJobs, AWS EventBridge, GitHub Actions en de meeste moderne job runners. Elk veld bestuurt één tijdseenheid — minuut, uur, dag van de maand, maand en dag van de week — en ondersteunt vier afkortingen: * (elke), een komma-gescheiden lijst (0,15,30,45), een bereik (1-5) en een stap (*/10). Door ze te combineren kun je vrijwel elk terugkerend schema beschrijven zonder zelf een kalender uit te schrijven.

Hoe gebruik je deze generator

Kies een voorinstelling voor een directe start, of bouw de expressie veld voor veld op. Elk veld heeft vier modi: Elke levert *; Specifieke lijst neemt komma-gescheiden waarden; Bereik neemt een begin–eind-paar; Stap neemt een interval (*/N) met een optionele begin-offset. De expressie en een omschrijving in gewone taal worden live bijgewerkt zodra je iets verandert. Andersom kan ook: zet een cron-string in het parse-veld onderaan — de tool ontcijfert hem in leesbare vorm en toont de volgende vijf uitvoeringstijden in jouw lokale tijdzone.

Veld-referentie

Minuut: 0–59. Uur: 0–23. Dag van de maand: 1–31. Maand: 1–12 (januari = 1). Dag van de week: 0–6 met zondag = 0 in klassieke Unix cron — 7 wordt door de meeste moderne parsers ook geaccepteerd als zondag. Als zowel dag van de maand als dag van de week op niet-*-waarden staan, vuurt klassieke cron op een van beide voorwaarden (een logische OF), wat veel mensen verrast. Kies één van de twee voor voorspelbaar gedrag.

Veelgestelde vragen

Komt dit overeen met Quartz / Spring cron?
Nee — deze generator levert klassieke Unix cron met 5 velden. Quartz en Spring gebruiken een variant met 6 of 7 velden die een seconden-veld vooraan en een optioneel jaar-veld achteraan toevoegt. De structuur is vergelijkbaar, dus je kunt deze output meestal plakken en 0 ervoor zetten om een Quartz-compatibele string te krijgen, maar speciale tokens zoals L (last) en W (weekday) zijn Quartz-only en verschijnen hier niet.
Hoe berekent de uitlegger de volgende uitvoeringen?
Wanneer je op Verklaar klikt, loopt de tool de expressie vooruit en toont de volgende vijf keren dat hij zal vuren, weergegeven in de lokale tijdzone van je browser. De hele berekening gebeurt lokaal — je cron-strings verlaten de pagina nooit.
Hoe zit het met tijdzones?
De generator en de preview van volgende uitvoeringen behandelen de expressie beide alsof hij in de lokale tijdzone van je browser draait. Productie cron-schedulers verschillen: Linux crond gebruikt de systeemtijdzone, AWS EventBridge gebruikt standaard UTC, GitHub Actions gebruikt UTC, Kubernetes gebruikt de cluster-tijdzone. Bevestig altijd de tijdzone van je runner voordat je deployt.
Hoe druk ik "de laatste dag van de maand" uit?
Klassieke Unix cron heeft geen ingebouwd "laatste dag"-token, dus de dichtstbijzijnde portable benadering is 59 23 28-31 * *, die elke dag vanaf de 28e om 23:59 vuurt. De job zelf moet controleren of date -d 'tomorrow' +%-d = 1 (of het equivalent in jouw taal) en overslaan als het niet daadwerkelijk het einde van de maand is. Quartz cron ondersteunt hiervoor L — maar Quartz-expressies werken niet op gewone Linux cron.
Kan ik een job elke 90 minuten uitvoeren?
Niet met één enkele cron-expressie — cron-stappen resetten elk uur, dus */90 werkt niet. De dichtstbijzijnde workaround is twee expressies: 0 0,3,6,9,12,15,18,21 * * * en 30 1,4,7,10,13,16,19,22 * * *, die samen elke 90 minuten vuren. Nog makkelijker: plan elke 30 minuten en doe exit 0 in het script wanneer het niet het juiste moment is.
Waarom vuurt mijn job twee keer bij de overgang naar zomer-/wintertijd?
Wanneer de klok vooruit springt, worden jobs die in het verdwenen uur staan gepland meestal overgeslagen. Wanneer de klok terugvalt, draaien jobs in het herhaalde uur twee keer. Om dit te voorkomen, draai cron in UTC (cron.timezone = 'UTC' of stel TZ=UTC in de crontab) en converteer naar lokale tijd binnen de job — UTC kent geen zomertijd.