|
Lucainas visuomenės prieš kažkiek laiko puikus cron ir crontab pamokymas kad manau verta dalintis. „Cron“ yra tam tikras „Windows“ numatytų užduočių atitikmuo, tik kad jis tvarkomas iš terminalo. Tie, kurie nori vizualinės sąsajos tam pačiam tikslui pasiekti, gali tai pamatyti kitas punktas. |
Kas yra cron?
Cron pavadinimas kilęs iš graikų chronos, kuris reiškia „laikas“. „Unix“ operacinėje sistemoje „cron“ yra įprastas fono procesų tvarkytuvas („daemon“), kuris reguliariai (pvz., Kiekvieną minutę, dieną, savaitę ar mėnesį) valdo procesus ar scenarijus. Procesai, kuriuos reikia vykdyti, ir laikas, kada jie turi būti vykdomi, nurodyti crontab faile.
Kaip veikia
Cron daemon prasideda nuo /etc/rc.d/ o /etc/init.d priklausomai nuo pasiskirstymo. „Cron“ veikia fone, kiekvieną minutę tikrina „crontab“ užduočių lentelę / etc / crontab , / var / spool / cron ieškant užduočių, kurias reikia atlikti. Kaip vartotojas galime pridėti komandas ar scenarijus su užduotimis, kad automatizuotume kai kuriuos procesus. Tai naudinga, pavyzdžiui, norint automatizuoti sistemos arba geros atsarginės sistemos atnaujinimą.
Kas yra „Crontab“?
„Crontab“ yra paprastas tekstinis failas, kuriame saugomas komandų, kurias reikia vykdyti vartotojo nurodytu laiku, sąrašas. „Crontab“ patikrins datą ir laiką, kada turėtų būti vykdomas scenarijus ar komanda, vykdymo teises ir tai padarys fone. Kiekvienas vartotojas gali turėti savo „crontab“ failą, iš tikrųjų / etc / crontab manoma, kad tai yra šakninio vartotojo crontab failas, kai įprasti vartotojai (ir net root) nori sukurti savo crontab failą, tada mes naudosime komandą crontab.
„Crontab“ yra paprasčiausias būdas valdyti „cron“ užduotis daugelio naudotojų sistemose kaip paprastas sistemos vartotojas arba pagrindinis vartotojas.
Naudojant crontab
Mes pradedame nuo paprasto pavyzdžio.
Mes ketiname automatizuoti sistemos atnaujinimą, kad pašalintume erzinantį „Aš visada turiu atnaujinti ir man tai nepatinka!“
Pirmiausia sukursime scenarijų. Šį scenarijų vadins „cron“ ir jame bus visos norimos instrukcijos, todėl prieš įtraukiant jį į „cron“, būtina jį išbandyti keliais atvejais ir keliais būdais: paprastas atnaujinimo scenarijus, kaip šis:
#! / bin / bash #script atnaujinimo pavyzdys #pasirinkite platinimą # debian-ubuntu # apt-get update & apt-get -y upgrade #fedora #yum -y update #Arch #pacman --noconfirm -Syu
Pašalinkite # iš savo platinimo linijos. Jei tai Ubuntu / Debian, tai prasideda apt-get.
Scenarijų įrašome kaip update.sh (pvz., Scenarijai nukreipia jūsų namus). Minėto scenarijaus vykdymo teises keičiame:
chmod a + x ~ / scripts / update.sh
Mes keletą kartų paleidome scenarijų, kad patikrintume, ar viskas veikia sklandžiai, mes modifikuojame tai, kas būtina (jame neturėtų būti klaidų, kitaip „cron“ klaidą pakartos tik vėl ir vėl). Dabar pridėkite užduotį prie mūsų krašto.
Pridėkite užduočių prie „crontab“
„Crontab“ leidimą vykdome su „crontab -e“, kai kuriuose distros centruose (pvz., „Ubuntu“) jis suteikia galimybę pasirinkti norimą teksto redaktorių, likusius mums lieka vi. Crontab failas atrodys maždaug taip.
# mh dom mon dow vartotojo komanda
kur:
- m atitinka minutę, kai scenarijus bus vykdomas, vertė svyruoja nuo 0 iki 59
- h tikslus laikas, 24 valandų formatas tvarkomas, reikšmės svyruoja nuo 0 iki 23, o 0 yra 12:00 vidurnakčio.
- dovana nurodo mėnesio dieną, pavyzdžiui, galite nurodyti 15, jei norite paleisti kas 15 dienų
- dow reiškia savaitės dieną, ji gali būti skaitinė (nuo 0 iki 7, kur 0 ir 7 yra sekmadienis) arba pirmosios 3 dienos raidės angliškai: pirmadienis, antradienis, trečiadienis, ketvirtadienis, penktadienis, sekmadienis, saulė.
- vartotojas apibrėžia vartotoją, kuris vykdys komandą, ji gali būti root arba kitas vartotojas, jei jie turi leidimus vykdyti scenarijų.
- komanda nurodo komandą arba absoliutų scenarijaus kelią, kurį reikia vykdyti, pavyzdys: /home/usuario/scripts/update.sh, jei jis kviečia scenarijų, jis turi būti vykdomas
Kad būtų aišku, keletas aiškinamųjų užduočių pavyzdžių:
15 10 * * * vartotojas /home/user/scripts/update.sh
Jis paleis „update.sh“ scenarijų kiekvieną dieną 10:15 val
15 22 * * * vartotojas /home/user/scripts/update.sh
Jis paleis „update.sh“ scenarijų kiekvieną dieną 10:15 val
00 10 * * 0 root apt-get -y atnaujinimas Root vartotojas
Ji bus atnaujinta kiekvieną sekmadienį 10:00 val
45 10 * * saulės šaknies apt-get -y atnaujinimas
Pagrindinis vartotojas atnaujins kiekvieną sekmadienį (sekmadienį) 10:45
30 7 20 11 * vartotojas /home/usuario/scripts/updata.sh
Lapkričio 20 d. 7 val. Vartotojas paleis scenarijų
30 7 11 11 saulės vartotojas /home/usuario/scripts/pastel_con_velitas.sh
Lapkričio 11 d., 7 val., Tai yra sekmadienį, vartotojas švęs savo „sysadmin“ (tai yra aš)
01 * * * * vartotojas /home/usuario/scripts/molestorecordatorio.sh
Erzinantis priminimas kiekvieną valandą kiekvieną valandą kiekvieną dieną (Nerekomenduojama).
Jie vis dar gali būti tvarkomi specialūs diapazonai:
30 17 * * 1,2,3,4,5
Kiekvieną dieną nuo pirmadienio iki penktadienio 5:30 popiet.
00 12 1,15,28 *
Kiekvieno mėnesio pirmą, penkioliktą ir 12 dieną 28 val. (Idealiai tinka darbo užmokesčiui)
Jei tai yra painu, sutraukite rankenas specialios eilutės šiems diapazonams apibrėžti.
@reboot Paleiskite vieną kartą, paleidimo metu
@ metai vyksta tik kartą per metus: 0 0 1 1 *
@ kasmet tas pats kaip @metai
@ mėnuo eina kartą per mėnesį, pirmą dieną: 0 0 1 * *
@ Savaitinė savaitinė savaitės pirmos valandos pirma minutė. 0 0 * * 0 ″.
Kasdien, kasdien, 12 val. 00 0 * * *
@ midnight tas pats kaip @daily
@ valandą kiekvieną valandą pirmą minutę: 0 * * * *
Jo naudojimas yra labai paprastas.
@ valandinis vartotojas /home/user/scripts/molestorecordatorio.sh @monthly user /home/user/scripts/backup.sh
Paskutinis, bet ne prasčiausias:
„Cron“ darbo valdymas
crontab failas
Pakeiskite esamą „crontab“ failą vartotojo apibrėžtu failu
crontab -e
Redaguokite vartotojo crontab failą, kiekviena nauja eilutė bus nauja crontab užduotis.
crontab -l
Išvardinkite visas vartotojo užduotis
crontab -d
Ištrinkite vartotojo kryželį
crontab -c rež
Nurodo vartotojo crontab katalogą (jis turi turėti vartotojo rašymo ir vykdymo teises)
crontab -u vartotojas
priešdėlis, skirtas tvarkyti kito vartotojo kraštovaizdį, pavyzdžiai:
$ sudo crontab -l -u šaknis $ sudo crontab -e user2 #crontab -d -u vartotojas
Šį įrankį, kaip ir daugelį kitų, galima pamatyti išsamiau ir išsamiau: