Atlikite „Cron“ darbą kas minutę

Run Cron Job Every Minute



Jei norite paleisti programą ar scenarijų fone „Linux“, tada „cron job“ yra labai svarbus. Naudodami „cron“ užduotis, fone galite paleisti programą ar scenarijų po tam tikro laiko intervalo.

Pažvelkime į kai kuriuos realaus gyvenimo „cron“ darbų pavyzdžius.







  • Tarkime, jums priklauso svetainė ir norite kiekvieną dieną visiems savo svetainės naudotojams išsiųsti el. Laišką. Viskas, ką jums reikia padaryti, tai parašyti el. Laiško siuntimo scenarijų ir nustatyti „cron“ užduotį tą scenarijų paleisti kiekvieną dieną.
  • Tarkime, jums priklauso reklamos agentūra ir norite priminti, kad visi reklamuotojai, kurių likutis yra mažesnis nei 5 USD, turi pasikrauti pinigų. Viskas, ką jums reikia padaryti, tai parašyti scenarijų, kuris patikrina visų reklamuotojų balansą ir kai jis yra mažesnis nei 5 USD, jis išsiųs pranešimą reklamuotojo mobiliojo telefono numeriu arba el. Tada nustatykite „cron“ užduotį, kad scenarijus būtų paleistas kas 5–10 minučių arba kas valandą.

„Linux“ yra daug kitų „cron“ darbų naudojimo būdų.



Šiame straipsnyje aš jums parodysiu, kaip kiekvieną minutę paleisti „cron“ užduotis „Linux“. Demonstracijai naudosiu „Debian 9 Stretch“. Bet jūs galite naudoti bet kurį pasirinktą šiuolaikinį „Linux“ platinimą. Pradėkime.



„Linux“ sistemoje jūs neprivalote būti šaknis kad galėtų vykdyti cron darbus. „Cron“ užduotis galite vykdyti kaip bet kuris vartotojas. Kiekvienas „Linux“ vartotojas gali naudoti a crontab failą paleisti savo „cron“ užduočių rinkinį.





Pagal numatytuosius nustatymus vartotojas neturi crontab failą „Linux“. Galite sukurti a crontab failą su šia komanda:

$crontab-Ir



Jei šią komandą vykdote pirmą kartą, turėtumėte būti paprašyti iš sąrašo pasirinkti teksto rengyklę. Rinksiu nano , numatytasis. Galite pasirinkti tą, kuris jums patinka. Baigę paspauskite .

The crontab failas turėtų būti sukurtas (jei dar nepasiekiamas) ir atidarytas naudojant mėgstamą teksto rengyklę. Dabar šio failo pabaigoje galite pridėti savo „cron“ užduotis ir kai būsite patenkinti, tiesiog išsaugokite jį ir išeikite iš teksto rengyklės.

Komandos vykdymo kas minutę sintaksė:

Sintaksė crontab failas yra toks:

minutė valanda dayOfMonth month dayOfWeek komandaToRun

Čia,

  • minutė gali būti 0 į 59 .
  • valandą taip pat gali būti 0 į 59 .
  • dayOfMonth gali būti 1 į 31 .
  • mėnuo gali būti 1 į 12 .
  • Savaitės diena gali būti 0 į 7 . 0 ir 7 reiškia sekmadienį, 1 reiškia pirmadienį, 2 reiškia antradienį ir pan.

Norėdami paleisti a commandToRun komandą kiekvieną minutę, turėtumėte ją įrašyti į crontab failą taip:

* * * * *commandToRun

Kas minutę atlikite „Crob“ darbą:

Dabar, kai žinome teorijas, pridėkime paprastą scenarijų laikmatis.sh į crontab failą ir sužinokite, kaip jį valdyti.

Viduje konors laikmatis.sh scenarijų, turiu tik šias kodų eilutes. Viskas, ką jis daro, yra sukurti naują failą /home/shovon/bin/timer.log (jei dar neegzistuoja) ir prideda prie datos komandos išvesties.

Dabar pridėkime scenarijų prie mūsų crontab ir leiskite jam veikti kiekvieną minutę su šia eilute:

* * * * * /namai/šovonas/esu/laikmatis.sh

Kai išsaugosite crontab failą ir išeikite iš teksto redaktoriaus, naujas crontab failas turi būti įdiegtas.

Praėjus minutei, atsiranda naujas failas laikmatis.žurnalas yra sukurtas norimame kataloge, kaip matote pažymėtoje ekrano kopijos skiltyje.

Nuo laikmatis.žurnalas žurnalo failą, akivaizdu, kad scenarijus laikmatis.sh važiuoja kiekvieną minutę.

„Cron Jobs“ klaidų gaudymas:

Norėdami surasti klaidas iš cron užduoties, galite nusiųsti klaidas į error.log failą ir normalius išėjimus į access.log failą, pavyzdžiui. Žinoma, failus galite pavadinti bet kuo.

Norėdami tai parodyti, pakeičiau savo scenarijų laikmatis.sh truputi. Dabar klaidos siunčiamos error.log failą / home / shovon / bin katalogas ir išvestys siunčiamos į access.log viduje konors / home / shovon / bin katalogą.

Iš pradžių /tmp/i_must_be_here failas neegzistuoja, todėl gaunu klaidą error.log failą, kaip matote.

The access.log failas šiuo metu tuščias.

Dabar aš ketinu sukurti failą /tmp/i_must_be_here

Ir kaip matote, išvestis yra access.log failą dabar.

Jei norite, galite nukreipti išvestį ir klaidas tame pačiame faile taip:

Kaip matote, STDIN ir STDERR išėjimai siunčiami į out.log failą.

Prieš vėl pradėdami darbą, įsitikinkite, kad paskutinis darbas baigtas:

Kad tai veiktų, galite sukurti laikiną failą iškart po darbo pradžios ir pašalinti jį prieš pat jo pabaigą. Tada prieš pradėdami darbą galite patikrinti, ar yra laikinas failas. Jei taip, galite išeiti iš darbo ir paleisti užduotį tik tada, kai laikinas failas nepasiekiamas.

Šis paprastas scenarijus tai ir daro.

Kaip matote, laikmatis.kvailas failas sukurtas.

Skaitydami access.log failas įrodo, kad „cron“ užduotis nėra vykdoma, kol ankstesnė „cron“ užduotis nebaigta vykdyti. Kaip matote, jis vyko 01:32:01, o kitą kartą turėjo vykti 01:33:01, bet ne. Vietoj to, jis vyko 01:35:01, maždaug po 3 minučių.

„Cron“ darbo rezultatų organizavimas, kad būtų galima lengvai derinti:

Galite gražiai formatuoti išvestis, kad jūsų „cron“ darbą būtų lengviau derinti.

Toliau pateiktame scenarijuje pateikiamas pavyzdys, kaip tai padaryti.

Kaip matote, išvestys, klaidos ir sėkmės pranešimai yra gerai atspausdinti žurnalo faile.

Galite padaryti nuostabių dalykų naudodami „cron“ darbus ir „shell“ scenarijus. Čia pademonstravau kai kurias idėjas. Bet dangus yra tavo riba. Nesivaržykite eksperimentuoti su bet kokiomis idėjomis. Dėkojame, kad perskaitėte šį straipsnį.