Kaip naudoti „Cron“ „Linux Unix“

Kas yra cronas?


„Cron“ yra programos, leidžiančios „Linux“ / „Unix“ vartotojams automatiškai vykdyti komandas ar scenarijus (komandų grupes) tam tikru laiku ar data, pavadinimas. Paprastai jis naudojamas administracinėms užduočių komandoms, pvz., Atsarginėms kopijoms, bet gali būti naudojamas bet kokiam darbui. Kaip apibrėžta „cron man“ puslapiuose; tai demonas, vykdantis suplanuotas programas.
Praktiškai visuose „Linux“ platinimuose „Vixie Cron“ versiją naudoja ją sukūręs asmuo, kuris yra Paulius Vixie, vienas iš didžiųjų „Unix“ guru, be kita ko, kūręs BIND, kuris yra vienas populiariausių DNS serverių. pasaulyje.

Pradėti cron


„Cron“ yra demonas (paslauga), o tai reiškia, kad jį reikia paleisti tik vieną kartą, paprastai naudojant tą pačią sistemos įkrovą. „Cron“ paslauga vadinama crond. Daugelyje paskirstymų paslauga įdiegiama automatiškai ir paleidžiama iš sistemos įkrovos, ją galima patikrinti keliais būdais:
 1) etc / rc.d / init.d / crond status 2) /etc/init.d/crond status crond (pid 507) veikia … 
Jei turite įdiegtą aptarnavimo komandą:
 tarnybos statusas
 veikia crond (pid 507) … 
jį taip pat galima peržiūrėti per komandą ps:
 ps -ef | grep crond
jei dėl kokių nors priežasčių cron neveikia, galime pradėti nuo:
 /etc/rc.d/init.d/crond start Crond paleidimas: [Gerai]
[color = rgb (0,0,0)] Jei paslauga nebuvo sukonfigūruota pradėti nuo pradžių, užtektų ją pridėti naudojant komandą chkconfig: [/ color]
 „chkconfig“ -35 krondų lygis 
Taip pridėtumėte jį paleisti 3 ir 5 lygius, kad jis prasidėtų sistemos įkrovos metu.

Naudojant cron


Yra bent du skirtingi cron naudojimo būdai:
Pirmasis yra kataloge / etc, kuriame greičiausiai rasite šiuos katalogus:
  • cron.valandos
  • cron.dienos
  • cron.savaitę
  • per mėnesį. kas mėnesį
Jei scenarijaus failas yra patalpintas bet kuriame iš šių katalogų, scenarijus bus vykdomas kas valandą, kiekvieną dieną, kiekvieną savaitę ar mėnesį, priklausomai nuo katalogo.
Kad scenarijus būtų įvykdytas, jis turi būti panašus į šį:
 #! / bin / sh #script, kuris sukuria atsarginę kopiją cd / usr / documents tar czf * backup cp backup / other_directory /
Turime pataisyti, kad pirmoji eilutė prasideda #!, O tai reiškia, kad tai yra „bash shell“ scenarijus, o kitos eilutės yra komandos, kurias norime vykdyti. Šis scenarijus galėtų būti pavadintas, pavyzdžiui, backup.sh, taip pat turime pakeisti atitinkamus leidimus, kad jį būtų galima vykdyti, pavyzdžiui:
 chmod 700 backup.sh ls -l backup.sh -rwx ------ 1 root root 0 liepos 20 d. 09:30 backup.sh
„X“ savininko leidimų grupėje (-rwx) rodo, kad jį galima vykdyti.
Jei paliksime šį scenarijų cron.hourly, tada jis bus vykdomas kas valandą su kiekvienos minutės minute, vėliau paaiškinsiu kodėl.
Antrasis būdas paleisti ar naudoti „cron“ yra tiesioginis manipuliavimas failu / etc / crontab. Įdiegus įvairius „Linux“ platinimus, šis failas atrodys taip:
 cat / etc / crontab SHELL = / bin / bash PATH = / sbin: / bin: / usr / sbin: / usr / bin MAILTO = root HOME = / # run-parts 01 * * * * root run-parts / etc / cron.hourly 02 4 * * * root run-parts /etc/cron.daily 22 4 * * 0 root run-parts /etc/cron.weekly 42 4 1 * * root run-parts /etc/cron.monthly
Pirmosios keturios eilutės yra kintamieji, nurodantys šiuos dalykus:
SHELLTai yra „apvalkalas“, po kuriuo eina kronas. Jei nenurodyta, pagal numatytuosius nustatymus bus paimta eilutėje / etc / passwd, atitinkanti cron vykdantį vartotoją.
PATHYra arba nurodomas kelias į katalogus, kuriuose cron ieškos komandos, kurią vykdyti. Šis kelias skiriasi nuo pasaulinio sistemos ar vartotojo kelio.
PAŠTASBūtent kam siunčiamas komandos rezultatas (jei jis turi kokią nors išvestį). „Cron“ išsiųs el. Laišką tiems, kurie nurodyti šiame kintamajame, tai yra, jis turi būti galiojantis sistemos ar kitos sistemos vartotojas. Jei nenurodyta, tada cron išsiųs laišką vartotojui, kuriam priklauso vykdoma komanda.
NAMAITai yra šakninis arba pagrindinis cron komandos katalogas, jei nenurodyta, tada šaknis bus ta, kuri nurodyta faile / etc / passwd, atitinkančiame vartotoją, kuris vykdo cron.
The komentarai pažymėti # eilutės pradžioje.
Po aukščiau pateiktų eilučių, kurios vykdo tinkamai suplanuotas užduotis. Nėra jokių apribojimų, kiek užduočių gali būti po vieną eilutėje. Laukai (Jiems 7) kurios sudaro šias eilutes, sudaromos taip:
 Minute Hour DayOfMonth Month DayOf Week User Command
  • Laukas: apibūdinimas
  • Minutė: Jis valdo valandos minutę, kurią komanda bus vykdoma, ši vertė turi būti nuo 0 iki 59.
  • Laikas: Jis kontroliuoja komandos vykdymo laiką, ji nurodoma 24 valandų formatu, vertės turi būti nuo 0 iki 23, 0 yra vidurnaktis.
  • Mėnesio diena: Mėnesio, kurį norite vykdyti komandą, diena. Pavyzdžiui, būtų nurodyta 20, kad komanda būtų įvykdyta mėnesio 20 dieną.
  • Mėnuo: Mėnuo, kuriuo komanda bus vykdoma, ją galima nurodyti skaičiais (1–12) arba mėnesio pavadinimu anglų kalba-tik pirmas tris raides.
  • Savaitės diena: Savaitės diena, kai komanda bus vykdoma, ji gali būti skaitinė (0–7) arba pagal dienos pavadinimą anglų kalba, tik pirmosios trys raidės. (0 ir 7 = sekmadienis)
  • Vartotojas: Komandą vykdantis vartotojas.
  • Komanda: Komanda, scenarijus ar programa, kurią norite paleisti. Šiame lauke gali būti keli žodžiai ir tarpai.
Žvaigždutė * kaip reikšmė pirmuose penkiuose laukuose parodys lauko pradžią ir pabaigą, ty viską. Minutės laukelyje * bus nurodytos visos minutės.
Norėdami geriau suprasti tai iš pirmųjų 5 laukų ir žvaigždutės, geriau pasinaudosiu keliais pavyzdžiais:
Pavyzdys:
 Aprašymas 01 * * * * Veikia 1 minutę kiekvieną valandą kiekvieną dieną 158 * * * 8:15 val. kiekvieną dieną 15 20 * * * 20:15 val. kiekvieną dieną 00 5 * * 0 5 val. kiekvieną sekmadienį * 5 * * sekmadienis Kas minutę nuo 5:00 val. 5:59 val. kiekvieną sekmadienį 45 19 1 * * 19.45 val. Kiekvieno mėnesio 1 d. 01 * 20 7 * Kiekvienos valandos 1 minutę liepos 20 d. 10 1 * 12 1 1:10 val. Kiekvieną gruodžio pirmadienį 00 12 16 * Trečiadienis Kiekvieno mėnesio 16 d. Vidurdienis ir trečiadienis 30 9 20 7 4 9.30 val. liepos 20 d., tai yra ketvirtadienis 30 9 20 7 * 9.30 val. nuo liepos 20 d., nepriklausomai nuo savaitės dienos 
Taip pat laukuose galima nurodyti sąrašus. Sąrašai gali būti 1,2,3,4 arba 1-4, kurie būtų vienodi. „Cron“ taip pat palaiko sąrašų padidinimą, kuris nurodomas taip:
 Vertė arba sąrašas / prieaugis
Vėlgi, sąrašus ir prieaugius lengviau suprasti naudojant pavyzdžius:
Pavyzdys:
 Aprašymas 59 11 * 1-3 1,2,3,4,5 11:59 val. Nuo pirmadienio iki penktadienio, sausio – kovo mėn. Pirmadieniais, trečiadieniais ir penktadieniais 10, 30 ir 50 minučių visomis valandomis * / 15 10-14 * * * Kas penkiolika minučių nuo 10:00 14.00 val. * 12 1-10 / 2 2,8 * Visos 12 val. Minutės, vasario ir rugpjūčio 1,3,5,7 ir 9 dienomis. (Trečiojo lauko prieaugis yra 2 ir prasideda nuo 1) 0 * / 5 1-10,15,20-23 * 3 Kas 5 valandas nuo 1 iki 10 dienos, 15 dienos ir nuo 20 iki 23 dienos kiekvieną mėnesį ir kad diena yra trečiadienis 3/3 2/4 2 2 2 Kas 3 minutes, pradedant 3 -ąja (3,6,9 ir tt) valanda 2,6,10 ir tt (kas 4 val. vasario 2 d., tai yra antradienis
Kaip matyti iš paskutinio pavyzdžio, cron užduotis, priskirta tai eilutei su tais duomenimis, būtų vykdoma tik tada, jei bus įvykdyti 5 laukai (AND). Tai yra, norint atlikti užduotį, ji turi būti antradienį, vasario 2 d., 02:03. Tai visada yra loginis IR, o tai grąžina tik tada, jei visi 5 laukai yra teisingi konkrečią minutę.
[color = rgb (0,0,0)] Tada ankstesnis atvejis aiškiai parodo, kad: [/ color]
Programa „cron“ iškviečiama kiekvieną minutę ir vykdo užduotis, kurias jos laukai įvykdė būtent tą minutę.
Įskaitant vartotojo lauką ir komandą, „crontab“ eilutės gali būti tokios:
 0 22 * ​​* * root /usr /daily backup.sh 0 23 * * 5 root /usr /week backup.sh 0 8.20 * * * jcarrillo mail -s "sistema veikia" [email protected]
Pirmas dvi eilutes vykdo pagrindinis vartotojas, o pirmąją - kiekvieną dieną 10:00 val. Scenarijų, kuris sukuria kasdienę atsarginę kopiją. Antrasis kiekvieną penktadienį 23 val. Vykdo scenarijų, kuris sukuria savaitės atsarginę kopiją. Trečiąją eilutę vykdo vartotojas sergio ir ji būtų vykdoma kiekvieną dieną 8 ryte ir 8 valandą nakties, o komanda yra nusiųsti el. Laišką į paskyrą [email protected] tema „sistema veikia“, būdas administratoriui žinoti, kad nuotolinė sistema yra aktyvi nurodytu laiku, tačiau jei jis tuo metu negauna el. laiško, kažkas negerai.
Būti šaknimi, tada galima, tiesiogiai modifikuoti crontab:
 vim / etc / crontab 
Tai yra tiesiogiai modifikuota.

„Cron“ paleidimas su keliais vartotojais, „crontab“ komanda


„Linux“ yra kelių vartotojų sistema ir „cron“ yra viena iš programų, palaikančių darbą su keliais vartotojais vienu metu. Kiekvienas vartotojas gali turėti savo „crontab“ failą, iš tikrųjų manoma, kad / etc / crontab yra pagrindinio vartotojo „crontab“ failas, nors nėra problemų, kad įtraukiami kiti vartotojai, taigi ir šeštasis laukas, tiksliai nurodantis, kas yra vartotojas. kuris atlieka užduotį ir yra reikalingas:
 / etc / crontab

Bet kai normalūs vartotojai (ir net šaknis) norite sukurti savo „crontab“ failą, tada naudosime crontab komanda.
Kataloge / var / spool / cron (gali skirtis priklausomai nuo paskirstymo), „cron“ failas sugeneruojamas kiekvienam vartotojui, nors šis failas yra tekstas, jo negalima redaguoti tiesiogiai.
Tada yra dvi situacijos, tiesiogiai generuojant „crontab“ failą naudojant komandą:
 crontab -e
Kuris atidarys numatytąjį redaktorių (paprastai vi) su failu, pavadinimu tuščias crontab, ir kur vartotojas įves savo užduočių lentelę ir bus automatiškai išsaugotas kaip / var / spool / cron / user.
Kitas atvejis yra tas, kad vartotojas redaguoja įprastą teksto failą su užduočių įrašais ir kaip pavyzdį pavadina jį „my_cron“, tada komanda $> crontab my_cron bus atsakinga už jo nustatymą kaip vartotojo cron failą / var / spool / cron / user:
 vi my_cron # ištrina failus iš bendrinamo aplanko 0 20 * * * rm -f / home / sergio / shared / * # vykdo scenarijų, kuris kiekvieno mėnesio pirmą dieną atlieka dokumentų aplanko atsarginę kopiją 0 22 1 * * / home / sergio / month support.sh # kas 5 valandas nuo pirmadienio iki penktadienio, jis įsitikina, kad leidimai yra teisingi mano namuose 1 * 5 * * * 1-5 chmod -R 640 / home / sergio / *: wq (the failas)> ls my_cron> crontab my_cron (nustatyta į / var / spool / cron / user)
Apibendrinant tai, kas išdėstyta pirmiau, ir apsvarstant kitas galimybes crontab:
 crontab file.cron (nustatys file.cron kaip vartotojo crontab) crontab -e (atidarys iš anksto nustatytą redaktorių, kuriame galima sukurti arba redaguoti crontab failą) -r (pašalina dabartinį vartotojo crontab)
Kai kuriuose paskirstymuose, kai redaguojamas įprastas vartotojo crontabs, būtina iš naujo paleisti paslaugą, kad būtų galima perskaityti crontab failus, esančius / var / spool / cron.
 service crond paleisti iš naujo 
Norėdami geriau suprasti, kaip pradėti / sustabdyti / iš naujo paleisti paslaugas, šiame straipsnyje rasite daugiau informacijos.

Kontroliuoti prieigą prie cron


„Cron“ leidžia jums kontroliuoti, kurie vartotojai gali naudotis „cron“ paslaugomis arba ne. Tai pasiekiama labai paprastai naudojant šiuos failus:
  • /etc/cron.allow
  • /etc/cron.deny
Kad vartotojas negalėtų naudoti „cron“ ar veikiau „crontab“ komandos, pakanka pridėti savo vartotojo vardą prie failo /etc/cron.deny, kad jį būtų galima naudoti, tada jo vartotojo vardą reikėtų pridėti prie /etc/cron.allow, jei dėl kokių nors priežasčių norite paneigti cron naudojimą visiems vartotojams, tada cron.deny pradžioje galite parašyti žodį ALL ir to pakaktų.
 echo ALL >> / etc / cron.deny arba pridėti kitą vartotoją prie cron.allow echo juan >> / etc / cron.allow
Jei nėra nei failo „cron.allow“, nei „cron.deny“, teoriškai „cron“ naudojimas nenaudojamas naudotojui. Vartotojų vardų pridėjimas į cron.allow, nesukuriant failo cron.deny, turės tokį patį poveikį kaip ir sukūrus jį žodžiu ALL. Tai reiškia, kad sukūrus cron.allow su vienu vartotoju, kiti vartotojai, norintys naudoti cron, visada turės būti nurodyti šiame faile.
IšvadosMes kalbėjome apie jo veikimą, tikiuosi, jūs supratote, kad kai kuriuose platinimuose, tokiuose kaip „Red Hat“, yra toks variantas kaip anakronas, kuris gali kompensuoti kai kuriuos „cron“ trūkumus, net ir bet kokiu lygiu, pradedant paprasčiausiu ir baigiant pažangiausiu. , patartina suprasti jo veikimą. Jei radote kokių nors klausimų ar turite pasiūlymą, nedvejodami pateikite jį komentaruose.Ar jums patiko ir padėjo ši pamoka?Galite apdovanoti autorių paspausdami šį mygtuką, kad suteiktumėte jam teigiamą tašką

Padėsite svetainės plėtrą, dalintis puslapį su draugais

wave wave wave wave wave