Cron išraiškų vertėjas:
ką daro ši eilutė?
Įklijuokite eilutę tiesiai iš crontab — tik penkis laukus arba visą eilutę su komanda. Gausite tvarkaraštį vienu sakiniu paprasta kalba, kiekvieną lauką iššifruotą ir dešimt artimiausių paleidimo datų. Niekur nieko nesiunčiame: išraišką išnagrinėja pati jūsų naršyklė.
Skaitykite laukus šia tvarka
Paveldėtos crontab eilutės retai būna dokumentuotos. Penkis laukus skaitykite šia tvarka:
1 · Suskaičiuokite laukus
Penki tarpais atskirti laukai — tai crontab. Šeši ar septyni reiškia Quartz ar kitą planuoklį, pradedantį nuo sekundžių — tai kita kalba, tik panašiai atrodanti. Viskas po penkto lauko yra komanda, o ne tvarkaraštis.
5 = cron · 6+ = ne cron2 · Pirmiausia du paskutiniai
Mėnesio diena ir savaitės diena nulemia, kuriomis dienomis. Jei abiejuose įrašyti skaičiai, sustokite: cron paleidžia užduotį, kai sutampa bent vienas iš jų — tai OR taisyklė ir klasikinė skaitymo klaida.
abu nurodyti → OR, ne AND3 · Tada du pirmieji
Minutė ir valanda nurodo, kuriuo metu tomis dienomis užduotis paleidžiama. Žvaigždutė minučių lauke reiškia 60 paleidimų per valandą. Mėnesio laukas svarbus tik tada, kai jame ne žvaigždutė.
* minutėje = 60×/val.Ką daro kiekviena šio crontab eilutė
Komandos crontab -l išvestis nepažįstamame serveryje, išversta eilutė po eilutės. Išverskite bet kurią — mygtukas įkelia ją į vertėją viršuje. Tinka ir ištisos eilutės: įklijuokite visą eilutę kartu su komanda į laukelį viršuje, o vertėjas paims tvarkaraštį ir įvardys likusią dalį kaip praleistą.
*/5 * * * * /usr/local/bin/health-ping.sh
30 3 * * * /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1
0 9 * * 1-5 /usr/local/bin/daily-digest.sh
0 6 1 * * /usr/local/bin/invoice-run.sh
Ką reiškia kiekvienas cron simbolis
Kiekvienas simbolis yra suglaustas užrašas, o neteisingai jį išskleidus tvarkaraštis per kodo peržiūrą ir suprantamas ne taip:
- Žingsniai skaičiuojami nuo mažiausios lauko reikšmės. */6 valandų lauke reiškia 00, 06, 12, 18 — o ne „praėjus šešioms valandoms nuo paskutinio paleidimo“.
- Skaičiai abiejuose dienų laukuose reiškia OR, o ne AND. Cron paleidžia užduotį, kai sutampa bent vienas iš jų, todėl tvarkaraštis platesnis, nei atrodo.
- Pavadinimai ir trumpiniai veikia ne visur. MON ir @daily tinka čia ir daugumoje cron versijų — bet skaičius supranta kiekvienas cron.
Simboliai — ką jie reiškia
į ką jie išsiskleidžia0 0 * * 0, @weekly ir SUN
Visos keturios eilutės žemiau reiškia sekmadienį vidurnaktį. Vertėjas kiekvieną perskaito ta pačia fraze ir pateikia tą patį artimiausių paleidimų sąrašą.
Kasdienės cron išraiškos
Kiekviena jau iššifruota ir turi savo puslapį — artimiausi paleidimai, variantai ir crontab eilutė, paruošta kopijuoti. Visas rinkinys — cron pavyzdžių bibliotekoje.
Dažniausiai įklijuojamos cron išraiškos
Kas minutę, kiekvieną valandą, kiekvieną dieną — 1 440 paleidimų per parą, 525 600 per metus. Visi penki laukai yra žvaigždutės, todėl niekas neribojama. Tai tinkamas tvarkaraštis pigiam būklės tikrinimui ir netinkamas beveik viskam kitam. Paveldėtame crontab prieš išteklių reikalaujantį scenarijų tai pirmoji eilutė, dėl kurios verta suabejoti.
Kas 5-a to lauko reikšmė, skaičiuojant nuo mažiausios jo reikšmės. Minučių lauke */5 suveikia :00, :05, :10 … :55 — 12 kartų per valandą, lygiai pagal laikrodį. Tai nereiškia „5 minutės po paskutinio paleidimo“: cron lygina laikrodžio reikšmes. Todėl */7 duoda :00, :07 … :56 ir vėl :00 — kiekvienos valandos pradžioje lieka 4 minučių tarpas.
Kasdien vidurnaktį pagal serverio laiką — 0 valandos 0 minutė, bet kuri data, bet kuris mėnuo, bet kuri savaitės diena. Būtent šį tvarkaraštį ir sutrumpina @daily. „Vidurnaktis“ čia yra serverio vidurnaktis, o laiko keitimo naktį serveris, dirbantis vietos laiku, jį gali praleisti arba pakartoti.
Tas pats. Trumpiniai atitinka tiksliai: @hourly = 0 * * * *, @daily ir @midnight = 0 0 * * *, @weekly = 0 0 * * 0, @monthly = 0 0 1 * *, @yearly = 0 0 1 1 *. Išsiskiria @reboot — tai apskritai ne tvarkaraštis: jis suveikia paleidus cron tarnybą. Šis vertėjas trumpinius išskleidžia, kad visada matytumėte penkis laukus po jais.
Todėl, kad ji ne iš crontab. Quartz (Jenkins, Spring), kai kurie debesų planuokliai ir kelios cron bibliotekos priekyje prideda sekundžių lauką — todėl laukų šeši, o su metais gale — septyni. Crontab tokios eilutės neįdiegs. Jei sekundžių laukas yra 0, jį pašalinkite ir likę penki paprastai perskaitomi kaip POSIX. Jei ten kas kita, tvarkaraštis suveikia dažniau nei kartą per minutę, o paprastas cron to net negali užrašyti.
Quartz kalboje tai reiškia „konkreti reikšmė nenurodyta“. Quartz reikalauja, kad lygiai vienas iš dviejų dienų laukų liktų nenurodytas, todėl viename jų atsiranda klaustukas. POSIX cron tokios taisyklės neturi ir ? nepriima — jo darbą atlieka paprasta *. Kai apriboti abu dienų laukai, cron paleidžia užduotį pagal jų sąjungą. Įklijavus ? į crontab, eilutė atmetama.
Taip. Įklijuokite 30 3 * * * /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1 ir vertėjas paims penkis tvarkaraščio laukus, juos išvers, o likusią eilutės dalį įvardys kaip praleistą. Jis supranta ir /etc/crontab formatą, kur tarp tvarkaraščio ir komandos rašomas naudotojo vardas. Ko jis nedarys — nespėlios dėl šešių laukų eilutės: sekundžių laukas priekyje reiškia Quartz, o ne crontab, ir tai kita kalba.
Įklijuokite išraišką viršuje. Rezultatų lange išvardijama dešimt artimiausių paleidimų konkrečiomis datomis — juos apskaičiuoja tikras analizatorius pagal jūsų naršyklės laiko juostą. Pats crontab dirba pagal serverio laikrodį: jei serveris veikia UTC, o jūs ne, visas sąrašas pasislenka jūsų laiko skirtumu. Bet niekas nepasakys, ar paleidimas pavyko — cron užrašo tik tai, kad užduotis buvo pradėta.
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ų.