Beregn de næste eksekveringer af et cron-udtryk
- Dashboard
- Dokumentation
- API
Hvad er et cron udtryk?
Et cron-udtryk er en kort streng, der beskriver en gentagelse over tid. Den
format arvet fra Unix indeholder fem felter adskilt af mellemrum: minut, time,
dag i måneden, måned og ugedag. Denne syntaks blev født med dæmonen
cron af Brian Kernighan i 1970'erne, derefter generaliseret af Vixie cron
(1987) understøttet af alle moderne Linux- og macOS-distributioner. I dag er den samme syntaks
findes i de fleste skyplanlæggere (AWS EventBridge, GCP Cloud Scheduler, Azure Logic
Apps) og CI/CD (GitHub Actions, GitLab CI, Jenkins).
┌──── minut (0-59)
│ ┌── time (0-23)
│ │ ┌── dag i måneden (1-31)
│ │ │ ┌── måneder (1-12 eller JAN-DEC)
│ │ │ │ ┌── ugedag (0-7 eller SØN-LØR, 0 og 7 = søndag)
│ │ │ │ │
* * * * *
Et velformet cron-udtryk definerer derfor et præcist cron-skema: hvert felt kan være en fast værdi, et interval, en liste, et trin eller en stjerne, der matcher alt. Kompaktheden af crontab-udtrykket er dets styrke, men det er også det, der gør det cron-dekoder er afgørende for visuelt at validere hensigten. Det er hele pointen af denne cron-konverter: lav en læsbar cron-forklaring plus listen over næste henrettelser.
Anatomi af et cron-udtryk
De fem felter deler en fælles grammatik. Her er de grænser, der accepteres af hver kolonne i en Standard crontab udtryk:
- Minut:
0-59. - Tid:
0-23, 24-timers format. - Dag i måneden:
1-31. - Måned:
1-12eller de tekstmæssige forkortelserJAN,FEB,MAR,APR,MAY,JUN,JUL,AUG,SEP,OCT,NOV,DEC. - Ugedag:
0-7hvor0og7begge repræsenterer søndag eller forkortelserneSUN,MON,TUE,WED,THU,FRI,SAT.
Specialkarakterer deles af de fem felter:
*: en hvilken som helst værdi, matcher alle tilladte værdier i feltet.,: diskret liste, f.eks.1,15,30i minutfeltet.-: inklusiv område, f.eks.9-17for kontortid./: trin, for eksempel*/15= hver 15. enheder, eller0-30/5= hvert 5. minut mellem 0 og 30.
Quartz Extensions (Java, AWS EventBridge, Spring): grammatik stiger til 6 eller 7
felter med en sekunders kolonne forrest (0-59) og nogle gange en kolonne
Efterfølgende år (1970-2099). Quartz introducerer også ? (ingen specifik
værdi, for at afkoble månedens og ugedagen), L (sidste: sidste dag i måneden,
eller sidste fredag med 5L), W (nærmeste hverdag) og #
(N. dag i ugen i måneden, f.eks. 2#3 for den 3. mandag). Et udtryk
Quartz er generelt ikke kompatibel med en UNIX crontab, og omvendt: dette er det vigtigste
fejlkilde ved kopiering af et cron-udtryk fra én platform til en anden.
# UNIX / Vixie cron (5 felter)
0 9 * * 1-5
# Kvarts (6 felter med sekunder)
0 0 9 ? * MAN-FR
# Kvarts (7 felter med årstal)
0 0 9 ? * MAN-FRE 2026
Hvorfor afkode et cron-udtryk?
Det er hurtigt at læse 0 0 * * *. At læse */7 2-5 1,15 * 1-5 er meget mindre. Hvornår
et udtryk er ud over det trivielle, risikoen for fortolkningsfejl øges, og cron-afkodningen
bliver et revisionsstadium i sig selv.
- Debug produktion: forstå, hvorfor en opgave blev udløst kl. 03:17 og ikke kl. 03:00, eller identificer et overlap mellem to job.
- Kodegennemgang: valider, at en planlægger, der er skubbet som en pull-anmodning, gør, hvad den gør hævder forfatteren uden at skulle huske hvert symbols semantik.
- Scheduler Audit: Gennemgå Linux cron jobs i
/etc/crontabog/etc/cron.d/, udløser Jenkins,spec.scheduleaf Kubernetes CronJob, reglerne AWS EventBridge og GCP Cloud Scheduler job. - Ældre migration: Genoptag en historisk
/etc/crontabuden dokumentation og genopbygg opgavekortet før en infrastrukturændring. - Onboarding: Tillad en ny udvikler at genlæse en crontab uden at skulle lære alle specialtegnene fra den ene dag til den anden.
Sådan bruger du cron-dekoder
Proceduren, der skal følges for at afkode et crontab-udtryk med værktøjet:
- Indsæt dit cron-udtryk i inputfeltet (5 felter adskilt af mellemrum).
- Angiv antallet af næste henrettelser, der skal beregnes.
- Klik på konverter for at starte cron-afkodningen: værktøjet returnerer en menneskelig dom, som forklarer udløsningen, plus den daterede liste over de næste henrettelser.
- Tjek visuelt, at datoerne svarer til din hensigt (tid, dag, frekvens).
- Kopiér outputtet via kopieringsknappen for at indsætte det i en billet, PR eller dokumentation teknisk.
Værktøjet giver ikke kun syntaktisk parsing: det giver en forklaring cron i naturligt sprog, hvilket gør det både til en cron-dekoder og en tidsplan validator.
Klassiske eksempler på cron udtryk
Mønstrene nedenfor dækker de fleste af de cron-skemaer, man støder på i produktionen. De er alle gyldige på Linux crontab, Kubernetes CronJob, GitHub Actions og størstedelen af ansøgningsplanlæggere.
| Udtryk | Menneskelig læsning |
|---|---|
* * * * * |
Hvert minut |
0 * * * * |
Hver time skarpt |
0 0 * * * |
Hver dag ved midnat |
0 0 * * 0 |
Hver søndag ved midnat |
*/15 * * * * |
Hvert 15. minut |
0 9 * * 1-5 |
9:00 mandag til fredag |
0 0 1 * * |
Den 1. i hver måned ved midnat |
0 0,12 * * * |
Ved midnat og middag hver dag |
*/5 9-17 * * 1-5 |
Hvert 5. minut i åbningstiden |
30 2 1,15 * * |
Den 1. og 15. i måneden kl. 02:30 |
For at udføre en cron-opgave på en Linux-server skal du redigere brugerens crontab fra skallen:
# rediger crontab for den aktuelle bruger
$ crontab -e
# liste eksisterende opgaver
$ crontab -l
# eksempel på tilføjet linje: daglig backup kl. 03.00
0 3 * * * /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1
Eksempel på cron-konverter-output for */5 * * * *:
2026-05-05 00:00:00
05-05-2026 00:05:00
05-05-2026 00:10:00
05-05-2026 00:15:00
05-05-2026 00:20:00
...
Ofte stillede spørgsmål om cron-dekoder
Hvad er forskellen mellem UNIX cron og Quartz?
UNIX/Vixie cron bruger 5 felter (minut til ugedag), uden præcision til det andet, og har ikke
indfødte forestilling om "sidste dag i måneden". Quartz (Java, Spring, AWS EventBridge) tilføjer en kolonne
sekunder øverst, nogle gange en år kolonne nederst og flere symboler
(?, L, W, #) mangler fra Linux crontab. A
cron expression 6-field Quartz er derfor ikke direkte portabel til
/etc/crontab og omvendt. Vores cron-dekoder er målrettet mod 5-formatet
felter, som dækker størstedelen af planlæggere.
Hvordan kører man et cron-job hvert 5. minut?
Med /-trinnet i minutfeltet:
*/5 * * * * /usr/local/bin/check-health.sh
Dette crontab-udtryk udløser scriptet ved minutter 0, 5, 10, 15... af hver
time, hver dag. Tilføj begrænsningerne for at begrænse arbejdstiden fra mandag til fredag
i felterne tid og ugedag: */5 9-17 * * 1-5.
Hvad betyder stjernen (*) i et cron-udtryk?
Stjernen betyder en hvilken som helst værdi: den matcher alle autoriserede værdier i feltet. I
0 0 * * *, de tre stjerner betyder "enhver dag i måneden, enhver
måned, alle ugens dage. Kombineret med de to første felter sat til 0, har vi
får "hver dag ved midnat". Stjernen kan også kombineres med et trin: */15 in
minut = hvert 15. minut.
Har Crontab en tidszone?
Standard til serverens tidszone. På en Linux crontab er det systemet TZ (ofte UTC på VPS og
containere). GitHub Actions tvinger UTC. Kubernetes CronJob bruger controller tidszone,
kan konfigureres via spec.timeZone siden 1.27. AWS EventBridge evaluerer udtryk ved
UTC. Applikationsplanlæggere (Symfony Scheduler, Quartz, Airflow) giver dig ofte mulighed for at indstille en
tidszone dedikeret til hver opgave. Hvis du er i tvivl, så tjek dato på målserveren og
sammenligne med outputtet fra cron-konverteren.
Cron job vs at command: hvilken skal man vælge?
cron bruges til at udføre en tilbagevendende opgave i henhold til en tidsplan. at bruges
at udføre en kommando kun én gang på et givet tidspunkt. Til daglig backup,
log rotation eller almindeligt API-kald, brug cron. At udskyde en enkelt operation
("genstart denne udrulning kl. 22.00 i aften"), brug på:
$ echo "/usr/local/bin/deploy.sh" | kl. 22.00
Hvordan tester man et cron-udtryk uden at udløse det?
Dette er netop rollen for denne cron-konverter: den beregner det næste N
henrettelser fra det aktuelle tidspunkt, uden at starte noget job. Du ser med det samme, om din
crontab-udtryk udløses kl. 03:00 som forventet eller 03:17 ved et uheld. At gå videre
langt før du installerer opgaven, kan du også teste scriptet alene (bash -x script.sh)
og kontroller syntaksen for en crontab-fil med crontab -T-fil på distributioner
der støtter det.
Hvad sker der, hvis dag-i-måned og ugedag begge er indstillet?
På Vixie cron (Linux) er reglen en logisk ELLER: Jobbet udløses, hvis en eller
det andetaf de to felter matcher. Dette er kontraintuitivt og en kilde til fejl. Kvarts bruger en
OG, derfor introduktionen af symbolet ? for eksplicit at angive "nej
begrænsning.” Som en generel regel skal du kun rette et af de to felter.
Anmodningseksempel
curl -X POST https://cdrn.fr/api/v1/tools/cron-converter/execute \
-H "Content-Type: application/json" \
-d '{"cron":"...","number_next_date":1}'
Inputskema
| Felt | Type | Påkrævet | Standard |
|---|---|---|---|
cron |
string | ✓ | – |
number_next_date |
integer | ✓ | – |
Endpoints
GET https://cdrn.fr/api/v1/tools- lister alle tilgængelige værktøjerGET https://cdrn.fr/api/v1/tools/cron-converter- henter skemaet for dette værktøjPOST https://cdrn.fr/api/v1/tools/cron-converter/execute- udfører dette værktøj med et JSON-payload