|
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“ demonas paleidžiamas iš /etc/rc.d/ arba /etc/init.d, priklausomai nuo distribucijos. „Cron“ veikia fone, kas minutę tikrindamas „crontab“ užduočių lentelę /etc/crontab arba /var/spool/cron, ar reikia atlikti užduotis. Kaip vartotojas, galime pridėti komandas arba scenarijus su užduotimis, kurias „cron“ turi atlikti, kad automatizuotų tam tikrus procesus. Tai naudinga, pavyzdžiui, norint automatizuoti sistemos atnaujinimus arba sukurti patikimą atsarginių kopijų kūrimo sistemą.
Kas yra „Crontab“?
„Crontab“ yra paprastas tekstinis failas, kuriame saugomas komandų, kurios turi būti vykdomos vartotojo nurodytu laiku, sąrašas. „Crontab“ patikrina scenarijaus ar komandos vykdymo datą ir laiką, vykdymo teises ir atlieka vykdymą fone. Kiekvienas vartotojas gali turėti savo „crontab“ failą; iš tikrųjų laikoma, kad /etc/crontab yra root vartotojo „crontab“ failas. Kai paprasti vartotojai (ir net root) nori sukurti savo „crontab“ failą, jie naudoja 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).
Taip pat galima tvarkyti specialius diapazonus :
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 painu, „crontab“ šiems diapazonams apibrėžti naudoja specialias eilutes.
@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: