Sukurti cron išraišką
- Skydelis
- Dokumentacija
- API
Kodėl „Visual Cron“ kūrėjas?
cron išraiška susideda iš penkių laukų ir vis tiek išlieka vienu labiausiai generuojančių
klaidų gamyboje. Kiek kartų kūrėjas parašė 0 0 * * 1 galvodamas „kiekvienas
Pirmadieniais“, neprisimindami, kad 1 gali reikšti sekmadienį, priklausomai nuo diegimo? Kiek
ar mes supainiojome */15 ir 15? Į tai atsako cron builder
reikia: vizualiai sukurkite crontab išraišką iš esamų išankstinių nustatymų arba
atskirų laukų ir paruoškite galutinę išraišką įklijuoti į Linux crontab, Kubernetes
„CronJob“ arba „GitHub“ veiksmų tvarkaraštis.
Šis įrankis yra priešingas mūsų cron dekoderiui: kur konverteris paima išraišką ir vykdo kitas egzekucijas, statytojas pasirenka žmogaus pasirinkimą ir gamina atitinkama cron išraiška.
Kaip tai veikia
Grafinė sąsaja siūlo du vienas kitą papildančius komponavimo režimus:
- Iš anksto nustatytas režimas: dažnio parinkiklis (kas minutę, kas valandą, kiekvieną dieną, kiekvieną savaitę, kiekvieną mėnesį, kiekvienais metais, tinkintas), kuris iš karto sugeneruoja cron išraišką galioja.
- Lauko režimas: penki redaguojami laukai (minutė, valanda, mėnesio diena, mėnuo, diena
savaitę), kur laisvai įvedate
*, sveikąjį skaičių, diapazoną1-5, sąrašą1,15,30arba veiksmas*/15.
Kūrėjas atnaujina išraišką realiuoju laiku ir rodo glaustą žmogaus skaitymą („kiekvieną dieną 3 val. ryto“, „kas 15 minučių“), kuri yra apsaugos priemonė: jei sakinys neatitinka jūsų ketinimų, posakis tikriausiai neteisingas.
Penki kronų laukai, paprasta kalba
Įprastą cron išraišką sudaro penki laukai, atskirti tarpais:
minutė valanda mėnesio diena mėnuo savaitės diena
* * * * *
- minutė (nuo 0 iki 59);
- valanda (nuo 0 iki 23);
- mėnesio diena (nuo 1 iki 31);
- mėnuo (nuo 1 iki 12 arba santrumpos sausio, vasario ir t. t.);
- savaitės diena (nuo 0 iki 7, 0 ir 7 dažniausiai sekmadienis įgyvendinimai).
Kiekvienas laukas priima keletą formų: * (visos reikšmės), konkretus sveikasis skaičius
(5), sąrašas (1,3,5), diapazonas (9–17), žingsnis (*/15
kas 15 reikšmių) arba derinį (0-30/5).
Tipiški naudojimo atvejai
- Kūrėjas, kuris mokosi cron: įsivaizduokite, kaip kiekvienas laukas sąveikauja, nerizikuodami klaidinga išraiška gamyboje.
- Sisadminas skuba: per kelias sekundes sugeneruokite Linux cron tvarkaraštį, Kubernetes CronJob arba Ansible darbas neperskaičius man puslapio.
- Kūrėjas be POSIX patirties: sukurkite crontab išraišką galioja Symfony Scheduler, Laravel Scheduler arba node-cron, nežinant istorinės sintaksės.
- „DevOps“ peržiūra: greitai sukurkite išraiškos prototipą, kad galėtumėte pasiūlyti traukimo metu užklausą, tada patvirtinkite ją naudodami cron dekoderį.
- Pasenęs perkėlimas: performuluokite istorinę cron išraišką naudodami kūrimo priemonę kad būtų užtikrinta semantika prieš stumiant ją kitur.
Bendrieji išankstiniai nustatymai
Pasirinkus išankstinį nustatymą, atskiri laukai perrašomi ir sukuriama atitinkama išraiška:
- Kiekvieną minutę:
* * * * *. Venkite gamyboje, nebent būtina ypač. - Kas valandą:
0 * * * *. Kiekvienos valandos pradžioje. - Kiekvieną dieną:
0 0 * * *. Vidurnaktį. - Kiekvieną savaitę:
0 0 * * 0. Kiekvieną sekmadienį vidurnaktį. - Kiekvieną mėnesį:
0 0 1 * *. 1 mėnesio vidurnaktį. - Kiekvienais metais:
0 0 1 1 *. sausio 1 d. vidurnaktį.
Dažni modeliai, kuriuos reikia žinoti
| Išraiška | Žmogaus skaitymas |
|---|---|
0 0 * * * |
Kiekvieną dieną vidurnaktį |
*/15 * * * * |
Kas 15 minučių |
0 9 * * 1-5 |
Kiekvieną darbo dieną 9 val. |
0 0 1 * * |
1 mėnesio vidurnaktį |
0 0 * * 0 |
Kiekvieną sekmadienį vidurnaktį |
*/5 9–17 * * 1–5 |
Kas 5 minutes darbo valandomis |
0 3 * * * |
Kiekvieną dieną 3 val. |
30 2 1,15 * * |
Mėnesio 1 ir 15 dienomis 2.30 val. |
Sukurkite pasirinktinę išraišką
Konkrečiais atvejais vedlys atskleidžia penkis laukus, kad būtų galima įvesti nemokamai. Kai kurie pavyzdžiai naudinga:
- Kiekvieną dieną 3 val.: minutė=
0, valanda=3ir kt.*laukus. - Kas 15 minučių: minutė=
*/15, kiti laukai*. - Nuo pirmadienio iki penktadienio 9 val.: minutė=
0, valanda=9, day-of-the-week=1-5. - Kas 1 ir 15 mėnesio vidurdienį: minutė=
0, valanda=12, day-of-month=1.15. - Kas 5 minutes nuo 9 iki 17 val.: minutė=
*/5, time=9-17.
Kaip naudoti cron builder
- Pasirinkite išankstinį nustatymą (kiekvieną minutę, kas valandą, kiekvieną dieną, kiekvieną savaitę, kiekvieną mėnesį, kasmet) kuris atitinka jūsų poreikio pagrindą.
- Jei reikia, patikslinkite tiesiogiai redaguodami penkis laukus (minutė, valanda, mėnesio diena, mėnuo, diena savaitės).
- Perskaitykite įrankio sugeneruotą žmogaus sakinį, kad patvirtintumėte ketinimą.
- Nukopijuokite cron išraišką, sukurtą naudojant kopijavimo mygtuką.
- Patvirtinkite tvarkaraštį naudodami mūsų cron dekoderį, kuris apskaičiuoja kitos faktinės vykdymo datos.
- Įklijuokite išraišką į „Linux crontab“, „Kubernetes CronJob“, „Symfony“ planuoklį arba savo „GitHub Actions“ darbo eigą.
Klasikiniai spąstai
- Mėnesio diena ir savaitės diena kartu: jei abi nėra
*, elgesys skiriasi įgyvendinant. Linux/Vixie cron taiko ARBA; į Šiuolaikinės bibliotekos kartais elgiasi kitaip. Norėdami išvengti. - 1 diena = pirmadienis ar sekmadienis?: priklausomai nuo šalies ir susitarimo. Dauguma cron „Unix“ laiko sekmadienį = 0 ir šeštadienį = 6. Patikrinkite savo planuotoją.
- Laiko juosta: Unix cron pagal numatytuosius nustatymus naudoja serverio laiko juostą. The Programų planuokliai (Symfony Scheduler, Quartz) dažnai leidžia nustatyti tam skirtą laiko juostą.
- Trūksta minutės:
* * * * *užduotį atlieka kiekvieną minutę, retai kada norime. Apsvarstykite galimybę nustatyti konkretų aktyviklį (0). valandines užduotis.
Žmogaus skaitymas ir produkcija
Be cron išraiškos, įrankis siūlo glaustą žmogaus skaitymą („visi dienų vidurnaktį“, „kas 5 minutes“). Tai yra apsaugos priemonė: jei sakinys neatitinka jūsų tyčia, posakis tikriausiai klaidingas. Sudėtingam atvejui naudokite mūsų cron dekoderis, kad būtų galima apskaičiuoti kitas faktines vykdymo datas.
Dažnai užduodami klausimai
Ar galiu neautomatiškai redaguoti išraišką panaudojęs sąsają?
Taip. Kūrėjas nėra išskirtinis režimas: penkis laukus galima redaguoti bet kuriuo metu. Jūs gali pradėti nuo išankstinio nustatymo, tada ranka pakoreguokite lauką, kad gautumėte crontab pritaikyta išraiška. Žmogaus rodmenys iš karto perskaičiuojami.
Ar įrankis palaiko 6 laukų kvarco formatą (su sekundėmis)?
Ne: 5 laukų formatas yra Unix standartas ir daugeliui planuotojų bendras pagrindas
(„Linux crontab“, „Kubernetes CronJob“, „GitHub Actions“, „GitLab CI“, „Symfony Scheduler“, „Laravel Scheduler“).
Kvarcas (Java) priima papildomą lauką sekundėms ir konkretiems simboliams
(?, L, W, #), tačiau toks poreikis išlieka retas.
Kaip tvarkoma laiko juosta?
Statytojas sukuria neutralią cron išraišką: tai variklis, kuris atlieka darbą, kuris taiko jį
laiko juosta. „Linux crontab“ tai yra serverio TZ. „GitHub Actions“ yra UTC. Įjungta
Kubernetes 1.27+, apraše galite nustatyti spec.timeZone. Symfony Scheduler ir
Kvarcas kiekvienai užduočiai atskleidžia tam tikrą laiko juostą.
Kaip patvirtinti savo išraišką nepaleidžiant jos gamybinėje versijoje?
Naudokite mūsų cron dekoderį. Jis apskaičiuoja kitą N vykdymą nuo dabartinio momento, nepradėjus jokio darbo. Tai geriausias būdas patvirtinti, kad a cron išraiška suaktyvinama suplanuotu laiku prieš ją įdiegiant.
Ką tai turi bendro su Symfony Scheduler?
Symfony Scheduler priima 5 laukų cron išraiškas per Schedule::cron('0 3 * * *', ...)
. Todėl kūrėjo sukurta išraiška gali būti įklijuota tokią, kokia yra. Tas pats ir Laraveliui
Planuoklis (->cron('...')), mazgas-cron, Hangfire ir Airflow.
Ar komandos crontab lange turėtų būti priešdėlis?
Taip, /etc/crontab jums reikia vartotojo (0 3 * * * www-data /usr/bin/php
...), o crontab -e vienam vartotojui jo praleidžia. Pati išraiška išlieka
identiški.
Užklausos pavyzdys
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":"*"}'
Įvesties schema
| Laukas | Tipas | Privalomas | Numatytasis |
|---|---|---|---|
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 | – | * |
Galiniai taškai
GET https://cdrn.fr/api/v1/tools- išvardija visus galimus įrankiusGET https://cdrn.fr/api/v1/tools/cron-builder- gauna šio įrankio schemąPOST https://cdrn.fr/api/v1/tools/cron-builder/execute- vykdo šį įrankį su JSON payload