Cron
Cron-expressieparser
Lees een cron-planning in gewone taal en zie wanneer hij weer draait.
Vijf velden: minuut, uur, dag van de maand, maand, dag van de week. Een zesde veld vooraan wordt gelezen als seconden.
Over cron-expressies
Een cron-expressie bestaat uit vijf velden die beschrijven wanneer een taak moet draaien: minuut, uur, dag van de maand, maand en dag van de week. Elk veld accepteert een getal, een lijst, een bereik of een stap zoals */15. Compact, maar makkelijk verkeerd te lezen — zeker de twee dagvelden, die op een manier samenwerken die de meeste mensen verkeerd inschatten. De planning uitgeschreven en met datums zien gaat daarom meestal sneller dan hem uitredeneren.
Naast de vijf numerieke velden accepteren de meeste cron-implementaties — inclusief de parser achter deze tool — ook drieletternamen voor maanden en weekdagen (JAN, MON) in plaats van cijfers, en een handvol afkortingen zoals @daily, @hourly en @weekly die uitbreiden naar de gelijkwaardige numerieke expressie. Die bestaan puur voor de leesbaarheid; @daily en "0 0 * * *" plannen identiek. Niet elke cron-implementatie ondersteunt echter elke afkorting, dus controleer de documentatie van je specifieke scheduler voordat je er in productie op vertrouwt.
Waar je het tegenkomt
- Een crontab-regel controleren voordat hij naar een server gaat
- Een planning lezen in een Kubernetes-CronJob of CI-pipeline
- Uitzoeken waarom een nachtelijke taak op een onverwacht uur liep
- Een nieuwe back-up- of opruimplanning vanaf nul schrijven
Veelgestelde vragen
Wat gebeurt er als ik zowel dag van de maand als dag van de week invul?
Ze worden gecombineerd met OF, niet met EN — de taak draait zodra een van beide klopt. "0 0 13 * 5" draait dus op de 13e van elke maand én op elke vrijdag, niet alleen op vrijdag de 13e. Dit is verreweg de meest gemaakte cron-fout.
In welke tijdzone staan de tijden?
UTC. Echte planners gebruiken de tijdzone van de machine of van de taakdefinitie, dus als je server op lokale tijd draait verschuiven de werkelijke momenten. Controleer de configuratie van de planner voordat je op het hier getoonde uur vertrouwt.
Worden expressies met vijf en zes velden allebei ondersteund?
Ja. Vijf velden is standaard Unix-cron, beginnend bij minuten. Een zesde veld vooraan voegt seconden toe, wat Quartz, Spring en diverse taakbibliotheken verwachten.
Kan ik @daily of MON schrijven in plaats van cijfers?
Ja. Drieletternamen voor maanden en weekdagen (JAN, MON, enzovoort) en afkortingen zoals @daily, @hourly en @weekly worden hier allebei geaccepteerd en breiden uit naar de gelijkwaardige numerieke velden — @daily is identiek aan "0 0 * * *". Deze worden breed, maar niet universeel, ondersteund: sommige minimale of embedded cron-implementaties accepteren alleen de kale vijfvelds-numerieke vorm, dus het is de moeite waard de documentatie van je daadwerkelijke scheduler te controleren voordat je in productie op een afkorting vertrouwt.