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.
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 cron2 · 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 EN3 · 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×/uurWat 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.
*/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
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.
De symbolen, uitgelegd
wat elk symbool betekent0 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.
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.
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.
Blijf verkennen
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.