Izračunati naslednje izvedbe cron izraza

analizira in prikazuje naslednje datume izvedbe cron konfiguracije

Kaj je cron izraz?

Cron izraz je kratek niz, ki opisuje ponavljanje skozi čas. The format, podedovan iz Unixa, vsebuje pet polj, ločenih s presledki: minute, ura, dan v mesecu, mesec in dan v tednu. Ta sintaksa se je rodila z demonom cron avtorja Briana Kernighana v sedemdesetih letih 20. stoletja, nato pa ga je posplošil Vixie cron (1987), ki ga podpirajo vse sodobne distribucije Linuxa in macOS. Danes je ista sintaksa najdemo v večini načrtovalcev v oblaku (AWS EventBridge, GCP Cloud Scheduler, Azure Logic Aplikacije) in CI/CD (GitHub Actions, GitLab CI, Jenkins).

┌──── minuta (0-59)
│ ┌── ura (0-23)
│ │ ┌── dan v mesecu (1-31)
│ │ │ ┌── mesecev (1-12 ali JAN-DEC)
│ │ │ │ ┌── dan v tednu (0-7 ali NED-SO, 0 in 7 = nedelja)
│ │ │ │ │
* * * * *

Dobro oblikovan cron izraz torej definira natančen cron urnik: vsako polje je lahko fiksna vrednost, obseg, seznam, korak ali zvezdica, ki se ujema z vsem. Kompaktnost crontab izraza je njegova moč, vendar je tudi tisto, kar ga naredi Cron dekoder bistvenega pomena za vizualno potrditev namere. To je bistvo tega pretvornika cron: ustvarite berljivo razlago cron in seznam naslednje usmrtitve.

Anatomija cron izraza

Pet polj ima skupno slovnico. Tukaj so omejitve, ki jih sprejme vsak stolpec a Standardni izraz crontab:

  • Minute: 0-59.
  • Čas: 0-23, 24-urni format.
  • Dan v mesecu: 1-31.
  • Mesec: 1-12 ali besedilne okrajšave JAN, FEB, MAR, APR, MAJ, JUNIJ, JUL, AVG, SEP, OKT, NOV, DEC.
  • Dan v tednu: 0-7 kjer 0 in 7 oba predstavljata nedeljo ali okrajšavi NED, PON, TOR, SRE, ČET, PET, SOB.

Posebni znaki, ki si jih deli pet polj:

  • *: katera koli vrednost, se ujema z vsemi dovoljenimi vrednostmi v polju.
  • ,: diskretni seznam, na primer 1,15,30 v polju minut.
  • -: vključno obseg, na primer 9-17 za uradne ure.
  • /: korak, na primer */15 = vsakih 15 enot ali 0-30/5 = vsakih 5 minut med 0 in 30.

Razširitve Quartz (Java, AWS EventBridge, Spring): slovnica se poveča na 6 ali 7 polja s stolpcem sekund na začetku (0-59) in včasih stolpcem Končno leto (1970-2099). Quartz predstavlja tudi ? (brez posebnega vrednost, za ločitev dneva v mesecu in dneva v tednu), L (zadnji: zadnji dan v mesecu, ali zadnji petek z 5L), W (najbližji delovni dan) in # (N. dan v tednu v mesecu, na primer 2#3 za 3. ponedeljek). Izraz Quartz na splošno ni združljiv s crontabom UNIX in obratno: to je glavni izvor napake pri kopiranju cron izraza z ene platforme na drugo.

# UNIX / Vixie cron (5 polj)
0 9 * * 1-5

# Quartz (6 polj s sekundami)
0 0 9 ? * PON-PET

# Quartz (7 polj z letnico)
0 0 9 ? * PON–PET 2026

Zakaj dekodirati cron izraz?

Branje 0 0 * * * je hitro. Branje */7 2-5 1.15 * 1-5 je veliko manj. kdaj izraz presega nepomembno, poveča se tveganje napake pri interpretaciji in dekodiranje crona postane sama po sebi stopnja pregleda.

  • Izdelava odpravljanja napak: razumejte, zakaj je bilo opravilo sproženo ob 03:17 in ne ob 03:00 ali ugotovite prekrivanje med dvema opraviloma.
  • Pregled kode: preverite, ali razporejevalnik, potisnjen kot zahteva za vlečenje, počne, kar počne trdi avtor, ne da bi si moral zapomniti semantiko posameznega simbola.
  • Revizija razporejevalnika: Preglejte cron opravila v Linuxu /etc/crontab in /etc/cron.d/, sprožilci Jenkins, spec.schedule Kubernetes CronJob, pravila Opravila AWS EventBridge in GCP Cloud Scheduler.
  • Migracija podedovanja: nadaljujte s preteklim /etc/crontab brez dokumentacijo in ponovno sestavite načrt opravil pred spremembo infrastrukture.
  • Vkrcanje: omogočite novemu razvijalcu, da ponovno prebere crontab ne da bi se morali čez noč naučiti vseh posebnih znakov.

Kako uporabljati cron dekoder

Postopek za dekodiranje izraza crontab z orodjem:

  1. Prilepite svoj cron izraz v vnosno polje (5 polj, ločenih z presledki).
  2. Navedite število naslednjih izvedb za izračun.
  3. Kliknite pretvori, da zaženete dekodiranje cron: orodje vrne človeški stavek, ki pojasnjuje sprožitev, in datumski seznam naslednjih usmrtitev.
  4. Vizualno preverite, ali datumi ustrezajo vašemu namenu (ura, dan, pogostost).
  5. Kopirajte izhod z gumbom za kopiranje, da ga prilepite v vstopnico, PR ali dokumentacijo tehnično.

Orodje ne zagotavlja le sintaktičnega razčlenjevanja: nudi razlago cronv naravnem jeziku, zaradi česar je hkrati dekodirnik cronin a validator urnika.

Klasični primeri izraza cron

Spodnji vzorci pokrivajo večino cron urnikov, ki se pojavljajo v proizvodnji. Oni veljajo za Linux crontab, Kubernetes CronJob, GitHub Actions in večino načrtovalci aplikacij.

Izraz Človeško branje
* * * * * Vsako minuto
0 * * * * Vsako uro točno
0 0 * * * Vsak dan ob polnoči
0 0 * * 0 Vsako nedeljo ob polnoči
*/15 * * * * Vsakih 15 minut
0 9 * * 1-5 Od ponedeljka do petka od 9.00
0 0 1 * * Prvega v mesecu ob polnoči
0 0,12 * * * Vsak dan ob polnoči in opoldne
*/5 9-17 * * 1-5 Vsakih 5 minut med delovnim časom
30 2 1,15 * * 1. in 15. v mesecu ob 2.30

Če želite izvesti nalogo cron na strežniku Linux, uredite uporabniški crontab iz lupine:

# uredi crontab trenutnega uporabnika
$ crontab -e

# seznam obstoječih nalog
$ crontab -l

# primer dodane vrstice: dnevno varnostno kopiranje ob 3. uri zjutraj
0 3 * * * /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1

Primer izhoda pretvornika cron za */5 * * * *:

2026-05-05 00:00:00
2026-05-05 00:05:00
2026-05-05 00:10:00
2026-05-05 00:15:00
2026-05-05 00:20:00
...

Pogosta vprašanja o dekoderju cron

Kakšna je razlika med UNIX cron in Quartz?

UNIX/Vixie cron uporablja 5 polj (minuta do dneva v tednu), brez natančnosti do sekunde in nima domači pojem »zadnji dan v mesecu«. Quartz (Java, Spring, AWS EventBridge) doda stolpec sekunde na vrhu, včasih stolpec leto na dnu in več simbolov (?, L, W, #) manjka v crontab-u Linux. A cron express 6-field Quartz torej ni neposredno prenosljiv na /etc/crontab in obratno. Naš dekodirnik cron cilja na format 5 področja, ki pokriva večino načrtovalcev.

Kako zagnati opravilo cron vsakih 5 minut?

S korakom / v polju minut:

*/5 * * * * /usr/local/bin/check-health.sh

Ta crontab izraz sproži skript v minutah 0, 5, 10, 15 ... vsake uro, vsak dan. Če želite omejiti delovni čas od ponedeljka do petka, dodajte omejitve v poljih za čas in dan v tednu: */5 9-17 * * 1-5.

Kaj pomeni zvezdica (*) v izrazu cron?

Zvezdica pomeni katero koli vrednost: ujema se z vsemi dovoljenimi vrednostmi polja. notri 0 0 * * *, tri zvezdice pomenijo »kateri koli dan v mesecu, kateri koli mesec, kateri koli dan v tednu. V kombinaciji s prvima dvema poljema, nastavljenima na 0, smo dobi "vsak dan ob polnoči". Zvezdico lahko kombinirate tudi s stopnico: */15 in minuta = vsakih 15 minut.

Ali ima Crontab časovni pas?

Privzeto je časovni pas strežnika. V crontabu Linux je sistem TZ (pogosto UTC na VPS in zabojniki). GitHub Actions prisili UTC. Kubernetes CronJob uporablja časovni pas krmilnika, nastavljiv prek spec.timeZone od 1.27. AWS EventBridge ovrednoti izraze po UTC. Razporejevalniki aplikacij (Symfony Scheduler, Quartz, Airflow) vam pogosto omogočajo nastavitev a časovni pas, namenjen posamezni nalogi. Če ste v dvomih, preverite datum na ciljnem strežniku in primerjajte z izhodom pretvornika cron.

Cron opravilo proti ukazu at: katerega izbrati?

cron se uporablja za izvajanje ponavljajočega se opravila po urniku. Uporablja se at za izvedbo ukaza samo enkrat ob določenem času. Za dnevno varnostno kopiranje, rotacijo dnevnika ali običajni klic API, uporabite cron. Za odlog ene operacije (»znova zaženi to uvedbo nocoj ob 22.00«), uporabite na:

$ echo "/usr/local/bin/deploy.sh" | ob 22. uri
Kako preizkusiti cron izraz, ne da bi ga sprožil?

Točno to je vloga tega pretvornika cron: izračuna naslednji N izvršitve iz trenutnega časa, ne da bi začeli katero koli opravilo. Takoj vidite, ali je vaš crontab izraz se sproži ob 03:00 po pričakovanjih ali ob 03:17 po nesreči. Da grem dlje daleč pred namestitvijo naloge lahko preizkusite tudi sam skript (bash -x script.sh) in preveri sintakso datoteke crontab z datoteko crontab -T v distribucijah ki to podpirajo.

Kaj se zgodi, če sta nastavljena dan v mesecu in dan v tednu?

Na Vixie cron (Linux) je pravilo logično ALI: opravilo se sproži, če ena ali drugood obeh polj se ujema. To je kontraintuitivno in vir hroščev. Quartz uporablja a IN, od tod uvedba simbola ?, ki izrecno označuje »ne omejitev". Praviloma popravite samo eno od obeh polj.

Primer zahteve

curl -X POST https://cdrn.fr/api/v1/tools/cron-converter/execute \
  -H "Content-Type: application/json" \
  -d '{"cron":"...","number_next_date":1}'

Vhodna shema

Polje Tip Obvezno Privzeto
cron string
number_next_date integer

Končne točke

  • GET https://cdrn.fr/api/v1/tools - izpiše vsa razpoložljiva orodja
  • GET https://cdrn.fr/api/v1/tools/cron-converter - pridobi shemo tega orodja
  • POST https://cdrn.fr/api/v1/tools/cron-converter/execute - izvede to orodje s JSON payloadom