Cron išraiškų generatorius:
kada bus paleista?
Pasirinkite dažnumą ir laiką. Generatorius parašo penkių laukų išraišką, perskaito ją paprasta kalba ir išvardija dešimt būsimų paleidimo datų — tvarkaraštį patikrinsite dar prieš jam patenkant į crontab, o ne po 03:30 paleidimo.
Kaip skaityti 30 3 * * 1-5
Kiekviena cron išraiška atsako į tuos pačius penkis klausimus iš kairės į dešinę — štai jie tikrame tvarkaraštyje.
Perskaitykite kaip sakinį: nuo pirmadienio iki penktadienio, 03:30. 30 3 * * 1-5
Pamatykite tvarkaraštį dar prieš cron jį paleidžiant
Dauguma cron išraiškų pirmą kartą patikrinamos 03:30 paleidimu gyvoje aplinkoje. Šis generatorius perkelia tą patikrą į jūsų naršyklę:
- Struktūruoti klausimai, o ne spėliojimai. Dažnumas, diena, laikas — kiekviena žodinio aprašo dviprasmybė virsta aiškiu valdikliu.
- Dešimt būsimų paleidimų, apskaičiuotų iš anksto. Tikras cron analizatorius eina per kalendorių, kad tvarkaraštį skaitytumėte kaip datas, o ne kaip sintaksę.
- Perkeliama POSIX išvestis. Penki laukai, vien skaičiai — veikia bet kuriame crontab, nuo Alpine iki AIX. Egzotiški simboliai tik pažymimi, bet negeneruojami.
Cron išraiška, laukas po lauko
*/15 9-17 * * 1-5Ką reiškia *, */5 ir @daily
Penki veikia bet kuriame crontab. Šeštasis skirtas tik Quartz ir nebus priimtas.
Atitinka viską — numatytoji ir garsiausia reikšmė. Minučių lauke tai reiškia šešiasdešimt paleidimų per valandą — iš čia ir gimsta ta pagalbos užklausa „kodėl tai pasileido 60 kartų“.
Žingsnis — kas 5-a reikšmė. Žingsniai nepereina iš vieno lauko į kitą: */90 minučių lauke tyliai virsta „:00 minute“ — 90 minučių ritmui reikia dviejų eilučių.
Intervalas — pirmad.–penktad. savaitės dienų lauke, 9–17 valandų lauke. Galima jungti su sąrašu: 1-5,0 yra darbo dienos ir sekmadienis.
Sąrašas — tikslios reikšmės, atskirtos kableliais. Perkeliamas būdas pasakyti „du kartus per valandą“ arba „sausis, balandis, liepa, spalis“.
Trumpiniai — @hourly @daily @weekly @reboot. Patogu ten, kur palaikoma, bet @reboot suveikia, kai pasileidžia cron tarnyba, o tai ne visada sutampa su sistemos įkrova.
Ne cron. # L W ? priklauso Quartz — Jenkins, Spring, kai kuriems CI įrankiams. Įklijavus juos į crontab, eilutė nebus priimta.
Gatavi cron tvarkaraščiai
Kiekviena eilutė atitinka POSIX. Retesniems atvejams, pavyzdžiui „kasmet kovo 2 d. 17:30“, pasižiūrėkite mūsų cron pavyzdžių biblioteką.
Dažniausi cron spąstai
Abu skaičiuojami tiesiogiai jūsų naršyklėje — be kreipimosi į serverį.
Dažni klausimai apie cron išraiškas
Jis paverčia žodžiais pasakomą tvarkaraštį, pavyzdžiui „kas darbo dieną devintą“, penkių laukų išraiška, kurią skaito cron: 0 9 * * 1-5. Šis eina toliau: išraišką perskaito atgal paprasta kalba ir apskaičiuoja dešimt būsimų paleidimo laikų, todėl tvarkaraštį tikrinate kaip datas. Jis taip pat pažymi du klasikinius spąstus: dienos laukų ARBA taisyklę ir žvaigždutę vietoj nulio.
Iš kairės į dešinę: minutė (0–59), valanda (0–23), mėnesio diena (1–31), mėnuo (1–12), savaitės diena (0–7, kur ir 0, ir 7 reiškia sekmadienį). Kiekviename lauke gali būti skaičius, sąrašas (0,30), intervalas (1-5), žingsnis (*/15) arba * reikšme „bet kuris“. Kai kurie planuokliai prideda šeštą sekundžių lauką (Quartz, Spring) — crontab jo nepriims.
Viena eilute — ne: žingsniai neperneša liekanos į kitą lauką, todėl */90 minučių lauke tereiškia „:00 minutę“. Sprendimas — dvi persipinančios crontab eilutės: 0 0-21/3 * * * (00:00, 03:00, 06:00…) ir 30 1-22/3 * * * (01:30, 04:30, 07:30…) — kartu tai duoda kas 90 minučių. Tas pats triukas tinka bet kokiam ritmui, iš kurio 60 nesidalija be liekanos.
Todėl, kad minučių laukas buvo *. * 3 * * * reiškia „kiekvieną minutę, kai valanda yra 3“ — nuo 03:00 iki 03:59, šešiasdešimt paleidimų. Norėjote 0 3 * * *. Tai klasikinė cron klaida ir būtent todėl šis įrankis visada įrašo konkrečią minutę, nebent tikrai pasirenkate „kas minutę“.
Cron suveikia, kai sutampa bent vienas — sąjunga, o ne sankirta. Taip parašyta POSIX specifikacijoje, ir daug kas ant to užkliūva. Paimkime 0 9 1-7 * 1 — natūralų bandymą pasakyti „pirmasis mėnesio pirmadienis“. Ši eilutė paleidžiama 1–7 dienomis ir kiekvieną pirmadienį: 10 ar 11 rytų per mėnesį vietoj vieno. Spąstų rodinys šiame puslapyje suskaičiuoja abu skaitymus greta ir parodo perkeliamą sprendimą.
Serverio vietos laiką — cron neturi laiko juostos lauko. Jei serveris veikia pagal UTC (o taip yra daugumoje debesijos atvaizdų), 09:00 crontab faile yra 09:00 UTC. Kai kurie cron variantai (cronie RHEL/Fedora sistemose, FreeBSD) paiso CRON_TZ= eilutės; klasikinis Debian vixie-cron — ne. Ir nepamirškite vasaros laiko, jei serveris gyvena vietos juostoje: laiko keitimo naktimis 02:30 gali įvykti du kartus arba neįvykti visai. Planuokite už 01:00–03:00 ribų arba laikykite serverius UTC — ir šios bėdos apskritai nebus.
Cron užfiksuoja, kad užduotį paleido; ar ji pavyko, standartinėmis priemonėmis nesužinosite. Trys sluoksniai: nukreipkite išvestį į žurnalą (>> /var/log/job.log 2>&1), nurodykite MAILTO= adresą, kurį kas nors tikrai skaito, ir tada uždėkite nepriklausomą patikrą pačiam rezultatui. Trečiasis sluoksnis veikia visur, kur rezultatas matomas iš išorės: perkurtas puslapis, atnaujintas sertifikatas, svetainės žemėlapis. Tylių klaidų rodinys šiame puslapyje žingsnis po žingsnio parodo visą šį gedimo scenarijų.
Tyrinėkite toliau
Nemokami įrankiai – tik pradžia.
Uptimia rūpinasi jūsų svetainių sveikata.
Veikimo laikas, SSL, domeno galiojimo pabaiga, puslapių greitis, transakcijos – stebima iš 171+ vietos visame pasaulyje. Nemokama 30 dienų.