Cron-expressie-syntaxis: Een Volledige Gids met Voorbeelden
Cron-expressie-syntaxis
Cron is de standaard taakplanner op Unix-achtige systemen. Elke cron-expressie definieert een planning in een compacte string die aangeeft wanneer een opdracht moet worden uitgevoerd. Het begrijpen van de syntaxis is essentieel voor het automatiseren van back-ups, logrotatie en onderhoudstaken.
De 5-veldnotatie
Een standaard cron-expressie heeft vijf velden, gescheiden door spaties:
* * * * *
| | | | |
| | | | +----- Dag van de Week (0-7, 0 en 7 = zondag)
| | | +------- Maand (1-12)
| | +--------- Dag van de Maand (1-31)
| +----------- Uur (0-23)
+------------- Minuut (0-59)
Velden in Detail
| Veld | Bereik | Speciale tekens | Voorbeeld |
|-------|-------|-------------------|---------|
| Minuut | 0-59 | , - * / | 30 = op minuut 30 |
| Uur | 0-23 | , - * / | 6 = om 6:00 |
| Dag van de Maand | 1-31 | , - * / | 15 = op de 15e |
| Maand | 1-12 | , - * / | 6 = in juni |
| Dag van de Week | 0-7 | , - * / | 0 = op zondag |
De minuut bepaalt het exacte uitvoeringsmoment: 30 * * * * wordt uitgevoerd op minuut 30 van elk uur. Het uur definieert het tijdstip van de dag: 0 6 * * * wordt dagelijks om 6:00 uitgevoerd. De dag van de maand beperkt tot specifieke kalenderdatums: 0 0 15 * * wordt op de 15e van elke maand om middernacht uitgevoerd. De maand beperkt de uitvoering tot specifieke maanden: 0 0 1 6 * wordt op 1 juni uitgevoerd. De dag van de week bepaalt welke weekdagen: 0 8 * * 1-5 wordt van maandag tot en met vrijdag om 8:00 uitgevoerd.
Belangrijk: Dagen 29-31 worden alleen uitgevoerd in maanden die die datums hebben. In kortere maanden worden die waarden stilzwijgend overgeslagen.
Speciale Tekens
| Teken | Naam | Doel | Voorbeeld |
|------|------|---------|---------|
| * | Sterretje | Alle mogelijke waarden | * in minuut = elke minuut |
| , | Komma | Lijst van waarden | 1,15,30 = minuten 1, 15, 30 |
| - | Koppelteken | Bereik | 9-17 = uren 9 tot en met 17 |
| / | Schuine streep | Stapwaarden | */5 = elke 5 minuten |
Stapwaarden met Schuine Streep
De schuine streep drukt "elke N eenheden" uit:
# Every 5 minutes
*/5 * * * *
# Every 2 hours
0 */2 * * *
# Every 15 minutes during business hours
*/15 9-17 * * *
Veelvoorkomende Cron-planningspatronen
| Planning | Expressie | Beschrijving |
|----------|------------|-------------|
| Elke minuut | * * * * * | Draait 1.440 keer per dag |
| Elke 5 minuten | */5 * * * * | Health checks, monitoring |
| Elk uur | 0 * * * * | Op elk heel uur |
| Tweemaal daags | 0 6,18 * * * | Om 6:00 en 18:00 |
| Dagelijks om middernacht | 0 0 * * * | Klassiek onderhoud |
| Wekelijks op zondag | 0 0 * * 0 | Wekelijks onderhoud |
| Eerste van de maand | 0 0 1 * * | Maandelijkse rapporten |
| Werkdagen om 9:00 | 0 9 * * 1-5 | Begin van de kantooruren |
Niet-standaard Snelkoppelingen
Sommige cron-implementaties ondersteunen benoemde snelkoppelingen: @yearly (1 jan), @monthly (eerste van de maand), @weekly (zondag), @daily (middernacht), @hourly en @reboot (draait één keer bij het opstarten van het systeem). Ondersteund door Vixie cron, cronie en systemd-timers.
Veelvoorkomende Fouten
- Het instellen van zowel dag-van-de-maand als dag-van-de-week creëert een OF-voorwaarde — de taak wordt uitgevoerd wanneer een van beide overeenkomt, wat zelden de bedoeling is.
- Cron gebruikt de tijdzone van het systeem. Taken rond overgangen naar zomertijd kunnen twee keer worden uitgevoerd of helemaal niet.
- Tel altijd vijf velden. Vier velden is ongeldig; zes velden vereisen uitgebreide cron-syntaxis.
Test Je Cron-expressies
Gebruik de cron-expressievalidator om de syntaxis te controleren, aankomende uitvoeringstijden te bekijken en fouten te ontdekken voordat ze de productie beïnvloeden. Een validatiecheck van dertig seconden voorkomt stille planningsfouten.