Cron-udtryk: generator og forklaring
Byg et cron-udtryk felt for felt, læs det på almindeligt dansk, se de næste kørsler i enhver tidszone, og konvertér det til systemd, Quartz eller AWS.
På almindeligt dansk
Både dag i måneden og ugedag er angivet: Klassisk cron kører, når ENTEN den ene ELLER den anden passer (ikke begge).
Byggeværktøj
| Felt | Tilstand | Værdi |
|---|---|---|
| Sekund0–59 | ||
| Minut0–59 | ||
| Time0–23 | ||
| Dag i måneden1–31, L | ||
| Måned1–12 eller JAN–DEC | ||
| Ugedag0–7 (0 og 7 = søndag) eller SUN–SAT |
Næste kørsler
Andre formater
- crontab-linje
- systemd OnCalendar=
- Quartz / Spring
- AWS EventBridge
Sådan bygger du et cron-udtryk
- Skriv eller indsæt et udtryk i Cron-udtryk, eller vælg et i Forvalg. Makroer som
@dailyeller@weeklyaccepteres også. - Eller brug Byggeværktøj: For hvert felt vælger du en Tilstand (Hver, Hver N, Bestemte værdier, Interval eller Brugerdefineret) og udfylder Værdi. Udtrykket opdateres undervejs, og når du redigerer udtrykket, opdateres byggeværktøjet.
- Sæt kryds ved Tilføj et sekundfelt (6 felter), hvis din planlægger understøtter sekunder.
- Læs tidsplanen På almindeligt dansk, og tjek derefter listen Næste kørsler. Vælg Tidszone for den server, der kører jobbet, og Hvor mange kørsler, der skal vises.
- Kopiér udtrykket med Kopiér, eller brug et af Andre formater.
Fejl forklares felt for felt, for eksempel »Minut: 61 ligger uden for intervallet (0–59)«, så du ved præcis, hvad der skal rettes.
Beskrivelsen af tidsplanen på dansk kommer fra biblioteket cronstrue, som indlæses ved behov. Datoerne for de næste kørsler vises efter danske regler.
De fem cron-felter
En standard cron-linje (Vixie) har fem felter og derefter kommandoen:
| Felt | Tilladte værdier |
|---|---|
| Minut | 0–59 |
| Time | 0–23 |
| Dag i måneden | 1–31 |
| Måned | 1–12 eller JAN–DEC |
| Ugedag | 0–7 (0 og 7 er søndag) eller SUN–SAT |
Hvert felt accepterer * (alle værdier), en liste 1,15, et interval 9-17, et trin */15 (hver 15. enhed) eller et interval med trin 0-30/10. Så */15 9-17 * * 1-5 betyder hvert 15. minut fra kl. 9.00 til 17.45, mandag til fredag.
En regel overrasker mange: Når både Dag i måneden og Ugedag er begrænset, kører klassisk cron, når en af dem passer. 0 0 13 * 5 kører den 13. i hver måned og hver fredag, ikke kun fredag den 13. Værktøjet viser en advarsel i det tilfælde.
Næste kørselstidspunkter og tidszoner
Cron bruger maskinens ur eller indstillingen CRON_TZ/TZ i crontab. Listen Næste kørsler beregnes for den tidszone, du vælger, inklusive skift mellem sommer- og vintertid: Ved skiftet om foråret kan et job, der er sat til 2.30, blive sprunget over, og om efteråret kan det køre én eller to gange alt efter implementeringen. Til job, der skal køre præcis én gang, bør du vælge tidspunkter uden for kl. 1.00–3.00 eller bruge UTC.
Vixie cron, systemd-timere, Quartz og AWS
- systemd-timere bruger
OnCalendar=med en anden syntaks:Mon..Fri *-*-* 09..17:00/15:00. Betingelser for ugedag og dato kombineres med OG, ikke ELLER, så nogle cron-udtryk har ingen præcis ækvivalent. - Quartz og Spring sætter et sekundfelt først og kan tilføje et årsfelt. Et af de to dagfelter skal være
?, og Quartz nummererer ugedage 1–7 fra søndag, i modsætning til crons 0–6. Værktøjet skriver ugedage som navne (MON-FRI) for at undgå den fælde. - AWS EventBridge bruger
cron(minutter timer dag måned ugedag år): seks felter, ingen sekunder, et?i det ene dagfelt og et år til sidst.
Standard cron har intet sekundfelt. Formen med 6 felter og sekunder understøttes af mange biblioteker (node-cron, Spring, Quartz), men ikke af systemets crontab.
Ofte stillede spørgsmål
Hvordan kører jeg et job hvert 5. minut?
Brug */5 * * * *. Jobbet kører ved minut 0, 5, 10 … i hver time.
Hvordan kører jeg et job den sidste dag i måneden?
Mange planlæggere accepterer L i feltet for dag i måneden: 0 18 L * *. Med almindelig Vixie cron kører du dagligt på dag 28–31 og tester i scriptet, om i morgen er den 1.
Hvad gør @reboot?
Det kører kommandoen én gang, når cron-daemonen starter. Der er ingen tidsplan, så værktøjet kan ikke vise kørselstidspunkter for det.
Hvorfor kører mit job ikke på det viste tidspunkt?
Tjek serverens tidszone, brugerens crontab i forhold til /etc/crontab (som har et ekstra brugerfelt) og PATH: Cron starter med et minimalt miljø.
Er 0 eller 7 søndag?
Begge dele. I feltet for ugedag betyder 0 og 7 søndag, 1 er mandag og 6 er lørdag.
Relaterede værktøjer
- Unix-tidsstempel-omregner Omregn Unix-tidsstempler i sekunder eller millisekunder til læselige datoer i lokal tid, UTC og ISO 8601, og omregn enhver dato tilbage til epoch-tid.
- Tidszoneomregner Omregn en dato og et klokkeslæt fra én tidszone til flere andre på én gang, med automatisk sommertid. Søg efter en vilkårlig IANA-tidszone eller by.
- Chmod-beregner Omregn Unix-filrettigheder mellem afkrydsningsfelter, oktal (755) og symbolsk notation (rwxr-xr-x), med setuid, setgid, sticky bit og færdige chmod-kommandoer.