Ga naar inhoud
TextArray

Cron-expressies begrijpen: schrijf schema's als een ontwikkelaar

Blog /

Cron-expressies bepalen wanneer geautomatiseerde taken worden uitgevoerd op servers, cloudplatforms en planningstools, maar de meeste ontwikkelaars nemen hun toevlucht tot het kopiëren van voorbeelden en hopen dat ze werken. Als u de cron-syntaxis begrijpt, kunt u vol vertrouwen elk schema helemaal opnieuw schrijven, falende taken sneller opsporen en kostbare fouten vermijden, zoals back-ups die nooit worden uitgevoerd.

Wat cron-expressies zijn en waarom ze ertoe doen

Een cron-expressie is een compacte reeks van vijf of zes velden die een systeem precies vertelt wanneer een taak moet worden uitgevoerd. Het is het standaardformaat op Unix-servers, Linux, GitHub Actions, AWS EventBridge, Kubernetes en CI/CD-platforms wereldwijd. In plaats van proza te schrijven als 'dit elke dinsdag om 02.00 uur', schrijf je 0 2 * * 2, en de cron daemon interpreteert het onmiddellijk. Het leren van deze notatie, die decennialang vrijwel onveranderd is gebleven, is een eenmalige investering die zich elke keer weer terugbetaalt als u iets plant.

De vijf velden en hun gebieden

Standaard cron gebruikt vijf verplichte velden, gescheiden door spaties. Lees ze van links naar rechts als minuut, uur, dag van de maand, maand en dag van de week:

  1. Minute (0–59) — welke minuut van het uur moet worden uitgevoerd
  2. Hour (0–23) — welk uur van de dag (24-uurs klok)
  3. Day of month (1–31) — welke kalenderdag
  4. Month (1–12) — welke maand van het jaar
  5. Day of week (0–7) — welke dag van de week, waarbij zowel 0 als 7 zondag betekenen

Elk veld accepteert een specifieke waarde, een bereik zoals 1-5, een lijst als 1,3,5, of een wildcard * wat 'elke waarde in dat veld' betekent. De slash-operator verdeelt bereiken: */15 in het minutenveld betekent elke 15 minuten.

Veelvoorkomende patronen die je gaat schrijven

De meeste schema's in de echte wereld herhalen zich op slechts een paar manieren. Doordeweekse ochtenden om 9.00 uur zijn dat wel 0 9 * * 1-5. Elk uur is 0 * * * *. Eerste dag van de maand om middernacht: 0 0 1 * *. Elke 15 minuten, de hele dag: */15 * * * *. Eén keer per dag op zondag om 02.30 uur: 30 2 * * 0. Als u ooit twijfelt of uw uitdrukking juist is, plak deze dan in een cron-parser om de volgende vijf geplande uitvoeringen te zien en te controleren of deze overeenkomen met uw bedoelingen voordat u deze implementeert.

Bouw uw eigen cron-expressie

Begin in het Engels en vertaal het vervolgens naar cron. Wil je "elke weekdag 09.30 uur"? Dat is 30 minuten en 9 uur, elke dag van de maand, elke maand, van maandag tot en met vrijdag. Velden worden 30 9 * * 1-5. Voor "twee keer per dag om 7.00 uur en 18.00 uur": 0 7,18 * * * (komma scheidt de uren). Elke maand op de 15e om 12.00 uur: 0 12 15 * *. Zodra u een expressie heeft geschreven, moet u deze altijd testen met de parser om typefouten op te sporen voordat u deze implementeert.

Beheer tijdzones en verifieer exacte tijden

Cron-expressies zijn server-relatief: ze worden uitgevoerd in de tijdzone van het systeem, niet in uw lokale tijdzone. Om een Unix-tijdstempel te verifiëren of te zien welke lokale tijd uw cron in uw zone activeert, gebruikt u de tijdstempel converter, dat in uw browser wordt uitgevoerd en tijdzoneconversies onmiddellijk afhandelt zonder ergens gegevens naartoe te sturen.

Verander uw planning in een agenda-evenement

Zodra u een solide cron-expressie heeft, kunt u deze delen of toevoegen aan uw agenda, zodat u kunt zien wanneer de taak wordt uitgevoerd. De ICS-generator converteert een startdatum en herhalingsregel naar een agendabestand dat wordt geïmporteerd in Apple Agenda, Google Agenda, Outlook of een standaard agenda-app. U kunt ook een direct Google Agenda-link waarmee u met één klik de vooraf ingevulde afspraak in Google Agenda opent: geen downloads, geen bestandsbeheer.

Uw cron-schema's blijven privé

Alle hier genoemde tools draaien in uw browser; er wordt niets naar een server geüpload. Cron-parsing, tijdstempelconversie, het genereren van kalenders en het maken van links gebeuren allemaal op uw apparaat. Geen account, geen tracking en de tools werken offline nadat ze zijn geladen. Uw planningen en automatiseringsgegevens blijven alleen van u.