Cron
Cron-uttrycksläsare
Läs ett cron-schema i klartext och se när det körs härnäst.
Fem fält: minut, timme, dag i månaden, månad, veckodag. Ett sjätte fält först tolkas som sekunder.
Om cron-uttryck
Ett cron-uttryck består av fem fält som beskriver när ett jobb ska köras: minut, timme, dag i månaden, månad och veckodag. Varje fält tar ett tal, en lista, ett intervall eller ett steg som */15. De är kompakta men lätta att läsa fel — särskilt de två dagfälten, vars kombination de flesta gissar fel på. Att se schemat utskrivet och daterat går därför oftast snabbare än att resonera sig fram.
Utöver de fem numeriska fälten accepterar de flesta cron-implementationer — inklusive tolken bakom det här verktyget — även tre-bokstavsnamn för månader och veckodagar (JAN, MON) i stället för siffror, samt en handfull förkortningar som @daily, @hourly och @weekly som expanderar till motsvarande numeriska uttryck. De existerar rent för läsbarhetens skull; @daily och "0 0 * * *" schemalägger identiskt. Inte alla cron-implementationer stöder dock alla förkortningar, så kontrollera din specifika schemaläggares dokumentation innan du förlitar dig på en i produktion.
Var du stöter på det
- Kontrollera en crontab-rad innan den läggs på en server
- Läsa ett schema i ett Kubernetes-CronJob eller en CI-pipeline
- Ta reda på varför ett nattjobb kördes på en oväntad timme
- Skriva ett nytt schema för säkerhetskopiering eller uppstädning från grunden
Vanliga frågor
Vad händer om jag anger både dag i månaden och veckodag?
De kombineras med ELLER, inte OCH — jobbet körs så snart något av dem stämmer. "0 0 13 * 5" körs alltså den 13:e varje månad och varje fredag, inte bara på fredagen den 13:e. Det är det överlägset vanligaste cron-misstaget.
Vilken tidszon gäller för körtiderna?
UTC. Riktiga schemaläggare använder maskinens eller jobbdefinitionens tidszon, så om servern går på lokal tid förskjuts de faktiska tidpunkterna. Kontrollera schemaläggarens konfiguration innan du litar på timmen som visas här.
Stöds uttryck med både fem och sex fält?
Ja. Fem fält är standardiserad Unix-cron som börjar på minuter. Ett sjätte fält först lägger till sekunder, vilket Quartz, Spring och flera jobbibliotek förväntar sig.
Kan jag skriva @daily eller MON i stället för siffror?
Ja. Tre-bokstavsnamn för månader och veckodagar (JAN, MON och så vidare) och förkortningar som @daily, @hourly och @weekly accepteras båda här och expanderar till motsvarande numeriska fält — @daily är identiskt med "0 0 * * *". Dessa stöds brett, men inte universellt: vissa minimala eller inbyggda cron-implementationer accepterar bara den rena femfälts numeriska formen, så det är värt att kontrollera din faktiska schemaläggares dokumentation innan du förlitar dig på en förkortning i produktion.