Sestaviti cron izraz

sestavlja cron izraz iz vizualnih polj ali preseta (vsako minuto, urno, dnevno, tedensko...)

Zakaj vizualni graditelj cron?

Cron izraz vsebuje pet polj, a kljub temu ostaja eden najbolj generiranih napake v proizvodnji. Kolikokrat je razvijalec napisal 0 0 * * 1 in mislil »vsak Ponedeljki", ne da bi se spomnili, da lahko 1 pomeni nedeljo, odvisno od implementacij? koliko smo kdaj zamenjali */15 in 15? Na to odgovori cron builder potreba: vizualno sestavite crontab izraz iz trenutnih prednastavitev oz posameznih polj in pripravite končni izraz za lepljenje v crontab Linux, Kubernetes CronJob ali urnik GitHub Actions.

Orodje je nasprotje našega dekodirnika cron: kamor pretvornik izraz in izvaja naslednje usmrtitve, graditelj sprejema človeške odločitve in proizvaja ustrezen cron izraz.

Kako deluje

Grafični vmesnik ponuja dva komplementarna načina sestavljanja:

  • Prednastavljeni način: izbirnik frekvence (vsako minuto, vsako uro, vsak dan, vsak teden, vsak mesec, vsako leto, po meri), ki takoj ustvari cron izraz veljavno.
  • Način polja: pet polj, ki jih je mogoče urejati (minuta, ura, dan v mesecu, mesec, dan teden), kjer poljubno vnesete *, celo število, obseg 1-5, seznam 1,15,30 ali korak */15.

Graditelj posodobi izraz v realnem času in prikaže jedrnato človeško branje (»vsak dan ob 3. uri zjutraj", "vsakih 15 minut"), ki služi kot varovalka: če se stavek ne ujema z vašo namero, izraz je verjetno napačen.

Pet cron polj, v preprostem jeziku

Standardni cron izraz vsebuje pet polj, ločenih s presledki:

minuta ura dan-v-mesecu mesec dan-v tednu
* * * * *
  • minuta (0 do 59);
  • ura (0 do 23);
  • dan v mesecu (1 do 31);
  • mesec (od 1 do 12 ali okrajšave Jan, Feb itd.);
  • dan v tednu (0 do 7, 0 in 7 sta večinoma nedelja izvedbe).

Vsako polje sprejme več oblik: * (vse vrednosti), določeno celo število (5), seznam (1,3,5), obseg (9-17), korak (*/15 vsakih 15 vrednosti) ali kombinacijo (0-30/5).

Tipični primeri uporabe

  • Razvijalec, ki se uči cron: vizualizirajte interakcijo posameznih polj brez tveganja lažno izražanje v proizvodnji.
  • Sysadmin v naglici: v nekaj sekundah ustvarite urnik za Linux cron, Kubernetes CronJob ali opravilo Ansible, ne da bi ponovno prebrali stran priročnika.
  • Razvijalec brez izkušenj s POSIX: izdelajte crontab izraz velja za Symfony Scheduler, Laravel Scheduler ali node-cron brez poznavanja zgodovinske sintakse.
  • DevOps v pregledu: hitro ustvarite prototip izraza, ki ga lahko predlagate pri vleku zahtevo, nato jo potrdite z dekodirnikom cron.
  • Migracija podedovanja: preoblikujte zgodovinski cron izraz z graditeljem da zagotovi semantiko, preden jo potisne drugam.

Skupne prednastavitve

Izbira prednastavitve prepiše posamezna polja in ustvari ustrezen izraz:

  • Vsako minuto: * * * * *. Izogibajte se v proizvodnji, razen če je potrebno posebno.
  • Vsako uro: 0 * * * *. Na začetku vsake ure.
  • Vsak dan: 0 0 * * *. Ob polnoči.
  • Vsak teden: 0 0 * * 0. Vsako nedeljo ob polnoči.
  • Vsak mesec: 0 0 1 * *. 1. v mesecu ob polnoči.
  • Vsako leto: 0 0 1 1 *. 1. januar ob polnoči.

Pogosti vzorci, ki jih morate poznati

Izraz Človeško branje
0 0 * * * Vsak dan ob polnoči
*/15 * * * * Vsakih 15 minut
0 9 * * 1-5 Vsak delavnik ob 9. uri
0 0 1 * * 1. v mesecu ob polnoči
0 0 * * 0 Vsako nedeljo ob polnoči
*/5 9-17 * * 1-5 Vsakih 5 minut med delovnim časom
0 3 * * * Vsak dan ob 3. uri zjutraj
30 2 1,15 * * 1. in 15. v mesecu ob 2.30

Sestavite izraz po meri

Za bolj specifične primere čarovnik izpostavi pet polj za brezplačen vnos. Nekaj primerov koristno:

  • Vsak dan ob 3. uri zjutraj: minuta=0, ura=3, drugo * polja.
  • Vsakih 15 minut: minute=*/15, druga polja *.
  • Od ponedeljka do petka ob 9.00: minuta=0, ura=9, day-of-the-week=1-5.
  • Vsakega 1. in 15. v mesecu opoldne: minuta=0, ura=12, dan-v-mesecu=1,15.
  • Vsakih 5 minut med 9.00 in 17.00: minute=*/5, čas=9-17.

Kako uporabljati cron builder

  1. Izberite prednastavitev (vsako minuto, vsako uro, vsak dan, vsak teden, vsak mesec, vsako leto) ki ustreza osnovi vaših potreb.
  2. Po potrebi izboljšajte z neposrednim urejanjem petih polj (minuta, ura, dan v mesecu, mesec, dan tedna).
  3. Preberite človeški stavek, ki ga ustvari orodje, da potrdite namen.
  4. Kopirajte cron izraz, ustvarjen z gumbom za kopiranje.
  5. Potrdite razpored z našim cron dekodirnikom, ki izračuna naslednji dejanski datumi izvedbe.
  6. Prilepite izraz v svoj Linux crontab, svoj Kubernetes CronJob, vaš Symfony Scheduler ali vaš potek dela GitHub Actions.

Klasične pasti

  • Dan v mesecu in dan v tednu skupaj: če oba nista *, obnašanje se razlikuje med implementacijami. Linux/Vixie cron uporablja ALI; the Sodobne knjižnice se včasih obnašajo drugače. Da bi se izognili.
  • 1. dan = ponedeljek ali nedelja?: odvisno od države in konvencije. Večina cron Unix upošteva nedeljo=0 in soboto=6. Preverite svoj planer.
  • Časovni pas: cron Unix privzeto uporablja časovni pas strežnika. The Razporejevalniki aplikacij (Symfony Scheduler, Quartz) vam pogosto omogočajo nastavitev namenskega časovnega pasu.
  • Manjkajoča minuta: * * * * * izvaja opravilo vsako minuto, kar je redko tisto, kar si želimo. Razmislite o nastavitvi posebnega sprožilca (0) za urnih opravil.

Človeško branje in izpis

Poleg cron izraza orodje ponuja jedrnato človeško branje (»vse dni ob polnoči«, »vsakih 5 minut«). To je varovalka: če stavek ne ustreza vašemu namen, je izraz verjetno napačen. Za zapleten primer uporabite našo cron dekoder za izračun naslednjih dejanskih datumov izvedbe.

Pogosta vprašanja

Ali lahko ročno uredim izraz po uporabi vmesnika?

ja Graditelj ni izključni način: pet polj je mogoče kadar koli urejati. Ti lahko začnete s prednastavitvijo, nato ročno prilagodite polje, da dobitecrontab izraz po meri. Človeški odčitek se takoj preračuna.

Ali orodje podpira 6-poljski format Quartz (s sekundami)?

Ne: 5-poljski format je standard Unix in osnova, ki je skupna večini načrtovalcev (Linux crontab, Kubernetes CronJob, GitHub Actions, GitLab CI, Symfony Scheduler, Laravel Scheduler). Quartz (Java) sprejme dodatno polje za sekunde in posebne simbole (?, L, W, #), vendar je ta potreba še vedno redka.

Kako se upravlja časovni pas?

Graditelj ustvari nevtralen cron izraz: motor je tisti, ki izvaja nalogo, ki velja za njegovo časovni pas. V crontabu Linux je to TZ strežnika. Na GitHub Actions je UTC. Vklopljeno Kubernetes 1.27+, lahko nastavite spec.timeZone v manifestu. Symfony Scheduler in Quartz izpostavi namenski časovni pas za vsako nalogo.

Kako preverim svoj izraz, ne da bi ga izvajal v produkciji?

Uporabite naš dekodirnik cron. Izračuna naslednjih N izvedb od trenutnega trenutka, ne da bi začeli kakršno koli delo. To je najboljši način za potrditev, da a Cron izraz se sproži ob načrtovanem času, preden se uvede.

Kaj ima to opraviti s Symfony Scheduler?

Symfony Scheduler sprejema 5-poljske cron izraze prek Schedule::cron('0 3 * * *', ...) . Izraz, ki ga ustvari graditelj, je torej mogoče prilepiti, kot je. Enako za Laravel Razporejevalnik (->cron('...')), node-cron, Hangfire in Airflow.

Ali naj bo ukaz predpono v sistemskem crontab?

Da, v /etc/crontab potrebujete uporabnika (0 3 * * * www-data /usr/bin/php ...), medtem ko ga crontab -e na uporabnika izpusti. Sam izraz ostaja enaka.

Primer zahteve

curl -X POST https://cdrn.fr/api/v1/tools/cron-builder/execute \
  -H "Content-Type: application/json" \
  -d '{"preset":"none","minute":"*","hour":"*","day_of_month":"*","month":"*","day_of_week":"*"}'

Vhodna shema

Polje Tip Obvezno Privzeto
preset choice (none, every_minute, hourly, daily, weekly, monthly, yearly) none
minute string *
hour string *
day_of_month string *
month string *
day_of_week string *

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-builder - pridobi shemo tega orodja
  • POST https://cdrn.fr/api/v1/tools/cron-builder/execute - izvede to orodje s JSON payloadom