Crontab-syntaxis
Voordat u cron-taken configureert, is het essentieel om de syntaxis en opmaak van cron te begrijpen om een soepele scriptuitvoering te garanderen. De crontab-syntaxis bestaat uit vijf velden, die elk specifieke waarden accepteren.
# ┌───────────── minuut (0 - 59)
# │ ┌───────────── uur (0 - 23)
# │ │ ┌───────────── dag van de maand (1 - 31)
# │ │ │ ┌───────────── maand (1 - 12)
# │ │ │ │ ┌───────────── dag van de week (0 - 6) (zondag tot zaterdag)
# │ │ │ │ │
# │ │ │ │ │
# │ │ │ │ │
# * * * * * [uit te voeren commando]
- Minuut: Geeft de minuut van het uur aan waarop het commando wordt uitgevoerd, van 0-59.
- Uur: Geeft het uur aan waarop het commando wordt uitgevoerd in 24-uursnotatie (0-23).
- Dag: Stelt de dag van de maand in waarop het commando wordt uitgevoerd, van 1-31.
- Maand: Bepaalt de maand waarin het commando wordt uitgevoerd, van 1-12/JAN-DEC (januari tot december).
- Dag van de week: Stelt de dag van de week in waarop het commando wordt uitgevoerd, van 0-6/SUN-SAT, waarbij 0 zondag tot zaterdag voorstelt en in sommige systemen 7 ook zondag betekent.
Naast de syntaxis is kennis van cron-operators noodzakelijk om waarden in elk veld aan te passen:
- Asterisk (*): Vertegenwoordigt alle mogelijke waarden in een veld. * in het minuutveld plant de cron-taak bijvoorbeeld elke minuut.
- Komma (,): Een operator om meerdere waarden op te sommen. 1,5 in het dag-van-de-week-veld plant de taak bijvoorbeeld elke maandag en vrijdag.
- Koppelteken (-): Geeft een bereik van waarden aan. 6-9 in het maandveld plant een cron-taak van juni tot en met september.
- Schuine streep (/): Verdeelt een waarde. Om een script elke twaalf uur uit te voeren, gebruikt u */12 in het uurveld.
- Last (L): Gebruikt in de dag-van-de-maand- en dag-van-de-week-velden; 3L in het dag-van-de-week-veld betekent bijvoorbeeld de laatste woensdag van de maand.
- Weekday (W): Bepaalt de dichtstbijzijnde weekdag. 1W in het dag-van-de-maand-veld voert het commando bijvoorbeeld uit op maandag de 3e als de 1e van de maand op een zaterdag valt.
Speciale cron-tekenreeksen
Speciale tekenreeksen worden gebruikt om cron-taken snel op bepaalde intervallen in te plannen zonder exacte waarden op te geven. U gebruikt ze door een eenvoudige zin te schrijven die begint met een @. Enkele nuttige speciale tekenreeksen:
- @hourly: De taak wordt eenmaal per uur uitgevoerd.
- @daily / @midnight: Deze tekenreeksen voeren de taak elke dag om middernacht uit.
- @weekly: Een tekenreeks om taken wekelijks uit te voeren op zondag om middernacht.
- @monthly: Deze speciale tekenreeks voert een commando eenmaal uit op de eerste dag van elke maand.
- @yearly: Gebruik deze tekenreeks om een taak eenmaal per jaar uit te voeren om middernacht op 1 januari.
Crontab-voorbeelden
In cron-syntaxis betekent de asterisk (*) 'elke', dus de volgende cron-tekenreeksen zijn geldig:
- Elk uur uitvoeren aan het begin van het uur:
0 * * * * - Eenmaal per dag om middernacht uitvoeren:
0 0 * * * - Eenmaal per week om middernacht op zondagochtend:
0 0 * * 0 - Eenmaal per maand om middernacht op de eerste dag van de maand:
0 0 1 * * - Eenmaal per maand op de 22e:
0 0 22 * * - Eenmaal per maand op de 2e maandag:
0 0 * * 1#2 - Eenmaal per jaar om middernacht op 1 januari:
0 0 1 1 * - Elke tweede zondag om 09.00 uur:
0 9 * * sun/2 - Twee keer per maand om 03.00 uur, op de 1e en 15e van de maand:
0 3 1,15 * *