|
Lucaine avaldatud kaua aega tagasi suurepärane õpetus croni ja crontabi kohta mida minu arvates tasub jagada. Cron on omamoodi samaväärne Windowsi ajastatud ülesannetega, ainult et sellega tegeletakse terminalist. Need, kes eelistavad sama eesmärgi saavutamiseks visuaalset liidest, saavad seda näha teine asi. |
Mis on cron?
Nimi cron pärineb Kreeka kroonidest, mis tähendab "aeg". Unixi operatsioonisüsteemis on cron tavaline taustaprotsesside haldur (deemon), mis käitab protsesse või skripte korrapäraste ajavahemike tagant (näiteks iga minuti, päeva, nädala või kuu järel). Protsessid, mis tuleb käivitada, ja nende täitmise aeg on täpsustatud crontabi failis.
Cómo tööd
Croni deemon algab /etc/rc.d/ o /etc/init.d sõltuvalt jaotusest. Cron töötab taustal, kontrollib crontabi ülesannete tabelit iga minuti järel / etc / crontab aastal / var / spool / cron täidetavate ülesannete otsimisel. Kasutajana saame mõne protsessi automatiseerimiseks lisada käske või skripte koos ülesannetega. See on kasulik näiteks süsteemi värskenduse või hea varundussüsteemi automatiseerimiseks.
Mis on Crontab?
Crontab on lihtne tekstifail, mis salvestab käskude loendi, mis tuleb täita kasutaja määratud ajal. Crontab kontrollib skripti või käsu käivitamise kuupäeva ja kellaaega, käivitamisõigusi ning teeb seda taustal. Igal kasutajal võib olla oma crontab-fail, tegelikult / etc / crontab eeldatakse, et see on juurkasutaja crontab-fail, kui tavakasutajad (ja isegi root) soovivad luua oma crontab-faili, siis kasutame käsku crontab.
Crontab on lihtsaim viis mitme kasutajaga süsteemides croni ülesannete haldamiseks kas lihtsa süsteemikasutajana või juurkasutajana.
Crontabi kasutamine
Alustame lihtsa näitega.
Automatiseerime süsteemi värskendamise, et kõrvaldada tüütu "Ma pean alati värskendama ja see ei meeldi mulle!"
Kõigepealt teeme stsenaariumi. Seda skripti kutsub cron ja see sisaldab kõiki juhiseid, mida me soovime, et see oleks vajalik, seetõttu on vaja seda enne croni lisamist mitmel juhul ja mitmel viisil testida, selline värskenduskript:
#! / bin / bash #script värskenduse näide #vali oma levitamine # debian-ubuntu # apt-get update & apt-get -y upgrade #fedora #yum -y update #Arch #pacman --noconfirm -Syu
Eemaldage # oma distrooliinilt. Juhul kui see on Ubuntu / Debian, algab see apt-get-iga.
Salvestame skripti failina update.sh (nt skriptid kataloogivad teie kodu). Nimetatud skripti täitmisõigusi muudame järgmisega:
chmod a + x ~ / scripts / update.sh
Käivitame skripti paar korda, et kontrollida, kas kõik töötab tõrgeteta, muudame vajalikku (see ei tohiks sisaldada vigu, vastasel korral korrab cron viga ainult uuesti ja uuesti). Nüüd lisage ülesanne meie crontabile.
Lisage crontabile ülesandeid
Käivitame crontabi väljaande crontab -e abil, mõnes distros (näiteks Ubuntu) annab see meile võimaluse valida soovitud tekstiredaktor, ülejäänud jääb meile vi. Crontabi fail näeb välja umbes selline.
# mh dom mon dow kasutaja käsk
kus:
- m vastab skripti käivitamise minutile, väärtus jääb vahemikku 0–59
- h täpne aeg, töödeldakse 24-tunnise formaadiga, väärtused jäävad vahemikku 0 kuni 23, kusjuures 0 on keskööl 12:00.
- kingitus viitab kuu päevale, näiteks võite määrata 15, kui soovite joosta iga 15 päeva tagant
- dow tähendab nädalapäeva, see võib olla numbriline (0 kuni 7, kus 0 ja 7 on pühapäev) või päeva esimesed 3 tähte inglise keeles: esmaspäev, teisipäev, laupäev, neljapäev, laupäev, laupäev, päike.
- kasutaja määratleb kasutaja, kes käsu täidab, see võib olla root või mõni muu kasutaja, kui neil on õigused skripti käivitamiseks.
- käsk viitab käsule või käivitatava skripti absoluutsele teele, näiteks: /home/usuario/scripts/update.sh, kui see siiski skripti kutsub, peab see olema käivitatav
Selgituseks on mõned näited selgitatud ülesannetest:
15 10 * * * kasutaja /home/user/scripts/update.sh
See käivitab skripti update.sh iga päev kell 10:15
15 22 * * * kasutaja /home/user/scripts/update.sh
See käivitab iga päev kell 10 skripti update.sh
00 10 * * 0 root apt-get -y värskendus Root kasutaja
See käivitab värskenduse igal pühapäeval kell 10:00
45 10 * * päikesejuure apt-get -y värskendus
Juurkasutaja käivitab värskenduse igal pühapäeval (pühapäeval) kell 10:45
30 7 20 11 * kasutaja /home/usuario/scripts/update.sh
20. novembril kell 7 käivitab kasutaja skripti
30 7 11 11 päikese kasutaja /home/usuario/scripts/pastel_con_velitas.sh
11. novembril kell 7 ja see on pühapäev, tähistab kasutaja oma sysadmini (see tähendab mind)
01 * * * * kasutaja /home/user/scripts/molestorecordatorio.sh
Tüütu meeldetuletus iga tunni iga tunni tagant (EI OLE soovitatav).
Nendega saab ikka hakkama spetsiaalsed vahemikud:
30 17 * * 1,2,3,4,5
Esmaspäevast reedeni iga päev kell 5.
00 12 1,15,28 *
Iga kuu esimesel, viieteistkümnendal ja 12. päeval kell 28 (ideaalne palgaarvestuseks)
Kui see on segane, kronteerige käepidemed nende vahemike määratlemiseks spetsiaalsed stringid.
@reboot Käivita üks kord, käivitamisel
@aastane jookseb ainult üks kord aastas: 0 0 1 1 *
@aastaga sama mis @aastat
@ kuu kestab üks kord kuus, esimesel päeval: 0 0 1 * *
@ nädalas Nädalas nädala esimese tunni esimene minut. 0 0 * * 0 ″.
@ iga päev iga päev kell 12:00 0 0 * * *
@ kesköö sama mis @ iga päev
@ tundi iga tunni esimesel minutil: 0 * * * *
Selle kasutamine on väga lihtne.
@tunnine kasutaja /home/user/scripts/molestorecordatorio.sh @kuukordne kasutaja /home/user/scripts/backup.sh @ iga päev root apt-get update && apt-get -y upgrade
Last but not least:
Croni töökorraldus
crontabi fail
Asendage olemasolev crontab-fail kasutaja määratud failiga
crontab -e
Muutke kasutaja crontab-faili, iga uus rida on uus crontab-ülesanne.
crontab -l
Nimekiri kõik kasutaja crontab ülesanded
crontab -d
Kustutage kasutaja crontab
crontab -c rež
Määrab kasutaja crontab-kataloogi (sellel peavad olema kasutaja kirjutamis- ja täitmisõigused)
crontab -u kasutaja
eesliide teise kasutaja crontabi käsitsemiseks, näited:
$ sudo crontab -l -u juur $ sudo crontab -e kasutaja2 #crontab -d -u kasutaja
Seda tööriista, nagu paljusid teisi, saab põhjalikumalt ja üksikasjalikumalt vaadata järgmistes osades: