Naar inhoud springen

Cron-expressie vertalen:
wat doet deze regel?

Plak een regel rechtstreeks uit de crontab — alleen de vijf velden, of de hele regel met het commando erbij. U krijgt de planning als één duidelijke zin, elk veld apart ontleed, en de eerstvolgende tien data waarop hij afgaat. Er wordt niets verzonden: de verwerking gebeurt in uw browser.

Waar te beginnen

Lees de velden in deze volgorde

Overgeërfde crontab-regels zijn zelden gedocumenteerd. Lees de vijf velden in deze volgorde:

1 · Tel de velden

Vijf door spaties gescheiden velden: dat is crontab. Zes of zeven betekent Quartz of een andere scheduler die met seconden begint — een andere taal die er toevallig hetzelfde uitziet. Alles na het vijfde veld is het commando, niet de planning.

5 = cron · 6+ = geen cron

2 · Lees eerst de laatste twee

Dag van de maand en dag van de week bepalen op welke dagen. Staat er in beide een getal, stop dan meteen: cron vuurt af zodra een van beide overeenkomt — de OF-regel, en de klassieke denkfout.

beide ingesteld → OF, niet EN

3 · Dan de eerste twee

Minuut en uur bepalen op welk tijdstip op die dagen. Een asterisk in het minutenveld betekent 60 keer per uur. Het maandveld doet er alleen toe als het geen asterisk is.

* in minuten = 60×/uur
Uitgewerkt voorbeeld

Wat elke regel in deze crontab doet

De uitvoer van crontab -l op een onbekende server, regel voor regel vertaald. Vertaal er willekeurig welke — de knop laadt hem in de lezer hierboven. Ook hele regels werken: plak een commando inclusief planning in de balk bovenaan, en de lezer haalt de planning eruit en benoemt het deel dat hij negeert.

# m h dom mon dow command
*/5 * * * *   /usr/local/bin/health-ping.sh
30 3 * * *    /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1
0 9 * * 1-5   /usr/local/bin/daily-digest.sh
0 6 1 * *     /usr/local/bin/invoice-run.sh
*/5 * * * *een controleping elke 5 minuten, dag en nacht — 288 keer per dag
30 3 * * *de nachtelijke back-up om 03:30 — let op: dit is de enige regel waarvan de uitvoer naar een log gaat
0 9 * * 1-5de digest om 09:00, alleen op werkdagen — 1-5 in het laatste veld staat voor maandag t/m vrijdag
0 6 1 * *facturatie op de 1e van de maand om 06:00 — een 1 in het middelste veld is een datum, geen weekdag
Leesrichting

Hoe u elk cron-symbool leest

Elk symbool is een verkorte notatie, en die verkeerd uitpakken is precies hoe een planning bij een review verkeerd wordt gelezen:

  • Stapwaarden tellen vanaf het minimum van het veld. */6 in het uurveld is 00, 06, 12, 18 — niet „zes uur na de vorige keer dat hij draaide”.
  • Getallen in beide dagvelden betekenen OF, niet EN. Cron vuurt af zodra een van beide overeenkomt, dus de planning is ruimer dan hij lijkt.
  • Namen en bijnamen zijn een dialect. MON en @daily werken hier prima en in de meeste crons — getallen zijn de schrijfwijze die elke cron accepteert.
Bekijk de OF-regel live in actie

De symbolen, uitgelegd

wat elk symbool betekent
*alles — in het minutenveld is dat 60 keer per uurmatcht alles
*/6elke 6e waarde, geteld vanaf het minimum van het veldeen stap
9-17een interval, beide grenzen inbegrepeneen bereik
1,15precies deze waarden, niets ertusseneen lijst
MON · JANnamen van 3 letters die sommige crons accepteren — deze pagina leest ze, maar getallen zijn universelerhier gelezen
@dailyeen bijnaam voor 0 0 * * * — hier uitgeschreven, zodat u ziet wat erachter zituitgeschreven
L # ? WQuartz (Jenkins, Spring) — een crontab weigert de hele regelgeen cron
Canonieke vorm

0 0 * * 0, @weekly en SUN

Alle vier de regels hieronder betekenen zondag om middernacht. De vertaler leest elke regel terug als dezelfde zin, met dezelfde lijst eerstvolgende uitvoeringen.

Getallen — de schrijfwijze die elke cron accepteert0 0 * * 0
De bijnaam@weekly
De dagnaam0 0 * * SUN
7 betekent ook zondag0 0 * * 7
Uit de bibliotheek

Veelgebruikte cron-expressies

Elke expressie is al ontleed en linkt naar de volledige pagina — eerstvolgende uitvoeringen, varianten en de crontab-regel klaar om te kopiëren. De hele collectie staat in de cron-voorbeeldenbibliotheek.

Cronjob elke minuut* * * * *
Cronjob elke 5 minuten*/5 * * * *
Cronjob elke 15 minuten*/15 * * * *
Cronjob elke 30 minuten*/30 * * * *
Cronjob elk uur0 * * * *
Cronjob elke 6 uur0 */6 * * *
Dagelijkse cronjob om middernacht0 0 * * *
Cronjob elke werkdag0 0 * * 1-5
Cronjob elke zondag0 0 * * 0
Maandelijkse cronjob0 0 1 * *
Cronjob elk kwartaal0 0 1 */3 *
Jaarlijkse cronjob0 0 1 1 *
FAQ

De cron-expressies die het vaakst worden geplakt

Elke minuut van elk uur, elke dag — 1.440 keer per dag, 525.600 keer per jaar. Alle vijf velden zijn jokertekens, dus er is niets beperkt. Dat is de juiste planning voor een goedkope controleping en de verkeerde voor bijna al het andere. Overgeërfd voor een kostbaar script, is het de eerste regel om in twijfel te trekken.

Elke 5e waarde van dat veld, geteld vanaf het minimum. In het minutenveld vuurt */5 af op :00, :05, :10 … :55 — 12 keer per uur, precies op de klokwaarden. Het betekent niet „5 minuten na de vorige keer”: cron matcht op klokwaarden. Zo geeft */7 u :00, :07 … :56 en dan weer :00 — een gat van 4 minuten aan het begin van elk uur.

Elke dag om middernacht, servertijd — minuut 0 van uur 0, elke datum, elke maand, elke weekdag. Dit is precies de planning die @daily afkort. „Middernacht” is de middernacht van de server, en in de nacht van een DST-overgang kan een server op lokale tijd dit moment overslaan of dubbel uitvoeren.

Identiek. De bijnamen komen precies overeen: @hourly = 0 * * * *, @daily en @midnight = 0 0 * * *, @weekly = 0 0 * * 0, @monthly = 0 0 1 * *, @yearly = 0 0 1 1 *. De uitzondering is @reboot — dat is helemaal geen planning, maar vuurt af zodra de cron-daemon start. Deze vertaler schrijft de bijnamen altijd uit, zodat u steeds de vijf onderliggende velden ziet.

Omdat hij niet uit een crontab komt. Quartz (Jenkins, Spring), sommige cloud-schedulers en enkele cron-bibliotheken zetten een secondenveld vooraan, wat er zes maakt — of zeven met een jaar erachteraan. Een crontab installeert dit niet. Staat het secondenveld op 0, laat het dan weg: de overige vijf velden zijn meestal gewoon als POSIX te lezen. Staat er iets anders, dan vuurt de planning sneller dan eens per minuut af, en dat kan gewone cron helemaal niet uitdrukken.

Dat is Quartz-notatie voor „geen specifieke waarde”. Quartz eist dat precies een van de twee dagvelden buiten spel staat, en dat veld krijgt dan een vraagteken. POSIX-cron kent die regel niet en ook geen ? — een gewone * doet daar hetzelfde werk. Zijn beide dagvelden wel beperkt, dan draait cron op de vereniging van de twee. Plak een ? in een crontab en de regel wordt geweigerd.

Ja. Plak 30 3 * * * /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1 en de lezer pakt de vijf planningsvelden, vertaalt die, en benoemt de rest van de regel als het deel dat hij negeert. Hij herkent ook de opzet van /etc/crontab, waar een gebruikersnaam tussen de planning en het commando staat. Wat hij niet doet, is gokken bij een regel met zes velden: een secondenveld vooraan betekent Quartz, geen crontab, en dat is een andere taal.

Plak de expressie hierboven. Het resultaat toont de eerstvolgende tien uitvoeringen als concrete data, berekend door een echte parser in de tijdzone van uw browser. De crontab zelf draait op de klok van de server: staat die op UTC en u niet, dan verschuift de hele lijst met uw tijdsverschil. Of een uitvoering geslaagd is, meldt niets — cron logt alleen dat hij gestart is.

Gratis tools zijn pas het begin.
Uptimia houdt uw sites gezond.

Uptime, SSL, Vervaldatum domein, paginasnelheid, transacties — gemonitord vanuit 171+ locaties wereldwijd. 30 dagen gratis.

30 dagen gratis geen kaart Altijd opzegbaar gratis plan na de proefperiode
100.000+ gemonitorde websites · AVG-conform