Cron-uttrykk forklart
Verktøyet går begge veier: skriv inn en tidsplan i crontab-format og få den forklart, eller beskriv tidsplanen med ord og få uttrykket.
Fem felt: minutt, time, dag i måneden, måned og ukedag. Et sjette felt for sekunder kan stå først.
Eksempler
Betyr
Hvert 15. minutt fra 5 til 59, i time 9–17, hver mandag–fredag
Felt for felt
| Felt | Uttrykk | Verdier |
|---|---|---|
| Minutt | 5-59/15 | 5, 20, 35, 50 |
| Time | 9-17 | 9, 10, 11, 12, 13, 14, 15, 16, 17 |
| Dag i måneden | * | alle |
| Måned | * | alle |
| Ukedag | MON-FRI | mandag, tirsdag, onsdag, torsdag, fredag |
Neste kjøringer
…
Sommertid håndteres som i Vixie cron og cronie: Et fast klokkeslett kjøres én gang selv om timen hoppes over eller gjentas, mens jobber med * i minutt eller time følger den nye klokken.
Slik fungerer det
Et cron-uttrykk har fem felt skilt med mellomrom: minutt (0–59), time (0–23), dag i måneden (1–31), måned (1–12) og ukedag (0–7, der både 0 og 7 er søndag). Hvert minutt sjekker cron om klokken stemmer med alle feltene, og i så fall starter den jobben.
I hvert felt betyr * alle verdier, 1-5 et intervall, 1,15 en liste og */15 hver femtende verdi. Steg kan også kombineres med intervaller: 5-59/15 gir minuttene 5, 20, 35 og 50. Måneder og ukedager kan skrives med engelske forkortelser, JAN–DEC og SUN–SAT.
Når både dag i måneden og ukedag er begrenset, holder det at én av dem stemmer. 0 0 13 * 5 kjøres derfor den 13. hver måned og hver fredag, ikke bare fredag den 13. Regelen kommer fra Vixie cron og gjelder på de fleste Linux-systemer. Begynner et av feltene med *, også med et steg som */2, må begge stemme.
Makroene @hourly, @daily, @weekly, @monthly og @yearly (eller @annually) er forkortelser for vanlige tidsplaner, og @reboot kjører jobben én gang når cron starter. Et sjette felt for sekunder først, ? for «hvilken dag som helst» og L for siste dag i måneden kommer fra Quartz, Spring og lignende planleggere, og vanlig crontab forstår dem ikke.
Cron følger datamaskinens lokale tid. Når sommertiden begynner og klokken hopper fra 02.00 til 03.00, kjøres en jobb med fast klokkeslett i den overhoppede timen rett etter omstillingen, og når klokken stilles tilbake, kjøres den bare én gang. Jobber med * i minutt- eller timefeltet følger i stedet den nye klokken. Listen her fungerer på samme måte, i din tidssone eller i UTC.
Sjekk hvilken implementasjon som kjører tidsplanen din. Skytjenester har ofte egne varianter: AWS EventBridge har for eksempel seks felt med året sist og krever ? i enten dag i måneden eller ukedag, og mange tjenester arbeider i UTC i stedet for lokal tid.
Motsatt vei kan du beskrive tidsplanen med ord i stedet: «hver mandag kl. 9», «hvert 15. minutt», «første dag i måneden 02.30», «hver hverdag mellom 9 og 17» eller «siste dag i måneden midnatt». Klokkeslett leses som 9, 9.30, 9:30 og 09h30, intervaller som 9–17 og lister som 1, 15. Blir frasen forstått, vises uttrykket med en gang, og forklaringen over sier med ord hva uttrykket betyr, så du kan se om det ble det du mente. Blir den ikke forstått, står det hvilke ord som ikke kunne leses, i stedet for at noe gjettes.
Byggeren under tekstfeltet gjør det samme med valg i stedet for ord, og de to følger hverandre: en frase fyller ut kontrollene, og hver endring i kontrollene skriver om uttrykket. Ikke alt kan uttrykkes i cron. Det finnes ingen måte å si «første mandag i måneden» eller «annenhver uke» på i vanlig crontab, og to ulike klokkeslett i samme frase (kl. 9 og 17) skrives som en liste i timefeltet: 0 9,17 * * *.