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]
  1. Minuut: Geeft de minuut van het uur aan waarop het commando wordt uitgevoerd, van 0-59.
  2. Uur: Geeft het uur aan waarop het commando wordt uitgevoerd in 24-uursnotatie (0-23).
  3. Dag: Stelt de dag van de maand in waarop het commando wordt uitgevoerd, van 1-31.
  4. Maand: Bepaalt de maand waarin het commando wordt uitgevoerd, van 1-12/JAN-DEC (januari tot december).
  5. 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 * *