Izgraditi cron izraz

izgrađuje cron izraz iz vizualnih polja ili preseta (svake minute, satno, dnevno, tjedno...)

Zašto vizualni cron builder?

Cron izraz sadrži pet polja, a ipak ostaje jedan od onih koji najviše generiraju greške u proizvodnji. Koliko je puta programer napisao 0 0 * * 1 misleći “svaki Ponedjeljak", a da se ne sjeti da 1 može značiti nedjelju, ovisno o implementacijama? Koliko jesmo li pobrkali */15 i 15? Cron builder odgovara na ovo potreba: vizualno sastavite crontab izraz, od trenutnih unaprijed postavljenih ili pojedinačnih polja i dobiti konačni izraz spreman za lijepljenje u Linux crontab, Kubernetes CronJob ili GitHub Actions raspored.

Alat je suprotan od našeg cron dekodera: gdje konverter vodi izraz i provodi sljedeća izvršenja, graditelj uzima ljudske izbore i proizvodi odgovarajući cron izraz.

Kako radi

Grafičko sučelje nudi dva komplementarna načina kompozicije:

  • Unaprijed postavljen način: birač frekvencije (svake minute, svakog sata, svakog dana, svaki tjedan, svaki mjesec, svake godine, prilagođeno) koji odmah generira cron izraz valjano.
  • Način polja: pet polja koja se mogu uređivati (minuta, sat, dan u mjesecu, mjesec, dan tjedan) gdje slobodno upisujete *, cijeli broj, raspon 1-5, popis 1,15,30 ili korak */15.

Graditelj ažurira izraz u stvarnom vremenu i prikazuje sažeto ljudsko čitanje ("svaki dan u 3 ujutro", "svakih 15 minuta") koji služi kao zaštita: ako rečenica ne odgovara vašoj namjeri, izraz je vjerojatno pogrešan.

Pet cron polja, jednostavnim jezikom

Standardni cron izraz sadrži pet polja odvojenih razmacima:

minuta sat dan-u-mjesecu mjesec dan-u tjednu
* * * * *
  • minuta (0 do 59);
  • sat (0 do 23);
  • dan u mjesecu (1 do 31);
  • mjesec (1 do 12 ili kratice siječanj, veljača itd.);
  • dan u tjednu (od 0 do 7, 0 i 7 su uglavnom nedjelja implementacije).

Svako polje prihvaća nekoliko oblika: * (sve vrijednosti), određeni cijeli broj (5), popis (1,3,5), raspon (9-17), korak (*/15 svakih 15 vrijednosti), ili kombinacija (0-30/5).

Tipični slučajevi upotrebe

  • Programer koji uči cron: vizualizirajte interakciju svakog polja bez rizika lažni izraz u proizvodnji.
  • Sysadmin u žurbi: generirajte u nekoliko sekundi raspored za Linux cron, Kubernetes CronJob ili Ansible posao bez ponovnog čitanja stranice priručnika.
  • Programer bez iskustva s POSIX-om: izradite crontab izraz vrijedi za Symfony Scheduler, Laravel Scheduler ili node-cron bez poznavanja povijesne sintakse.
  • DevOps u pregledu: brzo izradite prototip izraza za predlaganje u povlačenju zahtjev, zatim ga potvrdite cron dekoderom.
  • Naslijeđena migracija: preformulirajte povijesni cron izraz pomoću alata za izgradnju kako bi se osigurala semantika prije nego što se gurne negdje drugdje.

Uobičajene unaprijed postavljene postavke

Odabir unaprijed postavljene postavke prepisuje pojedinačna polja i proizvodi odgovarajući izraz:

  • Svake minute: * * * * *. Izbjegavati u proizvodnji osim ako je potrebno posebno.
  • Svakog sata: 0 * * * *. Na početku svakog sata.
  • Svaki dan: 0 0 * * *. U ponoć.
  • Svaki tjedan: 0 0 * * 0. Svake nedjelje u ponoć.
  • Svaki mjesec: 0 0 1 * *. 1. u mjesecu u ponoć.
  • Svake godine: 0 0 1 1 *. 1. siječnja u ponoć.

Uobičajeni obrasci koje treba znati

Izraz Ljudsko čitanje
0 0 * * * Svaki dan u ponoć
*/15 * * * * Svakih 15 minuta
0 9 * * 1-5 Svaki radni dan u 9 sati
0 0 1 * * 1. u mjesecu u ponoć
0 0 * * 0 Svake nedjelje u ponoć
*/5 9-17 * * 1-5 Svakih 5 minuta tijekom radnog vremena
0 3 * * * Svaki dan u 3 ujutro
30 2 1,15 * * 1. i 15. u mjesecu u 2:30 ujutro

Sastavite prilagođeni izraz

Za specifične slučajeve, čarobnjak izlaže pet polja za slobodan unos. Neki primjeri korisno:

  • Svaki dan u 3 ujutro: minuta=0, sat=3, ostalo * polja.
  • Svakih 15 minuta: minute=*/15, ostala polja *.
  • Od ponedjeljka do petka u 9 sati: minute=0, sat=9, day-of-the-week=1-5.
  • Svakog 1. i 15. u mjesecu u podne: minuta=0, sat=12, dan-mjeseca=1.15.
  • Svakih 5 minuta između 9 i 17 sati: minute=*/5, vrijeme=9-17.

Kako koristiti cron builder

  1. Odaberite unaprijed (svake minute, svakog sata, svakog dana, svakog tjedna, svakog mjeseca, svake godine) koji odgovara osnovici vaše potrebe.
  2. Pročistite ako je potrebno izravnim uređivanjem pet polja (minuta, sat, dan u mjesecu, mjesec, dan tjedna).
  3. Pročitajte ljudsku rečenicu koju je generirao alat kako biste potvrdili namjeru.
  4. Kopirajte cron izraz proizveden pomoću gumba za kopiranje.
  5. Potvrdite raspored s našim cron dekoderom koji izračunava sljedeći stvarni datumi izvršenja.
  6. Zalijepite izraz u svoj Linux crontab, svoj Kubernetes CronJob, svoj Symfony Scheduler ili vaš tijek rada GitHub Actions.

Klasične zamke

  • Kombinacija dana u mjesecu i dana u tjednu: ako oba nisu *, ponašanje se razlikuje između implementacija. Linux/Vixie cron primjenjuje OR; the Moderne knjižnice ponekad se ponašaju drugačije. Izbjeći.
  • 1. dan = ponedjeljak ili nedjelja?: ovisno o zemlji i konvenciji. Većina cron Unix smatra nedjelju=0 i subotu=6. Provjerite svoj planer.
  • Vremenska zona: Unix cron prema zadanim postavkama koristi vremensku zonu poslužitelja. The Raspoređivači aplikacija (Symfony Scheduler, Quartz) često vam omogućuju postavljanje posebne vremenske zone.
  • Minuta koja nedostaje: * * * * * izvršava posao svake minute, što rijetko je ono što želimo. Razmotrite postavljanje određenog okidača (0) za zadaci po satu.

Ljudsko čitanje i izlaz

Uz cron izraz, alat nudi sažeto ljudsko čitanje (“sve dana u ponoć", "svakih 5 minuta"). Ovo je zaštita: ako kazna ne odgovara vašoj namjera, izraz je vjerojatno pogrešan. Za složen slučaj upotrijebite naš cron dekoder za izračun sljedećih stvarnih datuma izvršenja.

Često postavljana pitanja

Mogu li ručno urediti izraz nakon korištenja sučelja?

da Graditelj nije isključivi način: pet polja se mogu uređivati u bilo kojem trenutku. ti može započeti s unaprijed postavljenim postavkama, zatim ručno podesiti polje kako bi se dobiocrontab izričaj po mjeri. Ljudsko očitanje se odmah ponovno izračunava.

Podržava li alat Quartz format sa 6 polja (sa sekundama)?

Ne: format od 5 polja je Unix standard i osnova zajednička većini planera (Linux crontab, Kubernetes CronJob, GitHub Actions, GitLab CI, Symfony Scheduler, Laravel Scheduler). Quartz (Java) prihvaća dodatno polje za sekunde i određene simbole (?, L, W, #), ali ova potreba ostaje rijetka.

Kako se upravlja vremenskom zonom?

Graditelj proizvodi neutralan cron izraz: motor je taj koji izvršava posao koji primjenjuje svoje vremenska zona. Na Linux crontabu, ovo je TZ poslužitelja. Na GitHub Actions je UTC. Uključeno Kubernetes 1.27+, možete postaviti spec.timeZone u manifestu. Symfony Planer i Quartz izlaže posebnu vremensku zonu po zadatku.

Kako da potvrdim svoj izraz bez pokretanja u produkciji?

Koristite naš cron dekoder. Izračunava sljedećih N pogubljenja od trenutnog trenutka, bez pokretanja bilo kakvog posla. Ovo je najbolji način da potvrdite da a cron izraz aktivira se u zakazano vrijeme prije nego što se postavi.

Kakve to veze ima sa Symfony Scheduler?

Symfony Scheduler prihvaća cron izraze s 5 polja putem Schedule::cron('0 3 * * *', ...) . Izraz koji je proizveo graditelj stoga se može zalijepiti kakav jest. Isto za Laravel Planer (->cron('...')), node-cron, Hangfire i Airflow.

Treba li naredba imati prefiks u crontabu sustava?

Da, u /etc/crontab trebate korisnika (0 3 * * * www-data /usr/bin/php ...), dok ga crontab -e po korisniku izostavlja. Sam izraz ostaje istovjetan.

Primjer zahtjeva

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":"*"}'

Ulazna shema

Polje Tip Obavezno Zadano
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 *

Krajnje točke

  • GET https://cdrn.fr/api/v1/tools - ispisuje sve dostupne alate
  • GET https://cdrn.fr/api/v1/tools/cron-builder - dohvaća shemu ovog alata
  • POST https://cdrn.fr/api/v1/tools/cron-builder/execute - izvršava ovaj alat s JSON payloadom