Sestaviti cron izraz
- Nadzorna plošča
- Dokumentacija
- API
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, obseg1-5, seznam1,15,30ali 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
- Izberite prednastavitev (vsako minuto, vsako uro, vsak dan, vsak teden, vsak mesec, vsako leto) ki ustreza osnovi vaših potreb.
- Po potrebi izboljšajte z neposrednim urejanjem petih polj (minuta, ura, dan v mesecu, mesec, dan tedna).
- Preberite človeški stavek, ki ga ustvari orodje, da potrdite namen.
- Kopirajte cron izraz, ustvarjen z gumbom za kopiranje.
- Potrdite razpored z našim cron dekodirnikom, ki izračuna naslednji dejanski datumi izvedbe.
- 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 orodjaGET https://cdrn.fr/api/v1/tools/cron-builder- pridobi shemo tega orodjaPOST https://cdrn.fr/api/v1/tools/cron-builder/execute- izvede to orodje s JSON payloadom