|
Lucaine javno prije malo vremena odličan vodič o cron-u i crontabu koje mislim da vrijedi podijeliti. Cron je vrsta ekvivalenta planiranim zadacima u sustavu Windows, samo da se njime rukuje s terminala. Oni koji više vole vizualno sučelje da bi postigli isti cilj, mogu to vidjeti druga stavka. |
Šta je cron?
Ime cron dolazi od grčkog chronos što znači "vrijeme". U Unix operativnom sistemu, cron je redoviti upravitelj pozadinskih procesa (demon) koji pokreće procese ili skripte u redovnim intervalima (na primjer, svaki minut, dan, sedmica ili mjesec). Procesi koji se moraju izvršiti i vrijeme u kojem se moraju izvršiti navedeni su u datoteci crontab.
Kako to funkcioniše
Cron demon počinje od /etc/rc.d/ o /etc/init.d ovisno o distribuciji. Cron radi u pozadini, provjerava tablicu zadataka crontab svake minute / etc / crontab ili u / var / kalem / cron u potrazi za zadacima koje treba obaviti. Kao korisnik možemo dodati naredbe ili skripte sa zadacima u cron za automatizaciju nekih procesa. Ovo je korisno, na primjer, za automatizaciju ažuriranja sistema ili dobrog sigurnosnog sistema.
Šta je Crontab?
Crontab je jednostavna tekstualna datoteka koja pohranjuje popis naredbi koje treba izvršiti u vrijeme koje je odredio korisnik. Crontab će provjeriti datum i vrijeme kada treba izvršiti skriptu ili naredbu, dozvole za izvršenje i to će učiniti u pozadini. Svaki korisnik može imati svoju crontab datoteku, zapravo / etc / crontab pretpostavlja se da je datoteka root korisnika crontab, kada normalni korisnici (pa čak i root) žele generirati vlastitu datoteku crontab, tada ćemo koristiti naredbu crontab.
Crontab je najlakši način upravljanja cron zadacima na višekorisničkim sistemima, bilo kao jednostavni sistemski korisnik ili kao root korisnik.
Korišćenje crontab-a
Počinjemo sa jednostavnim primjerom.
Idemo automatizirati ažuriranje sistema, kako bismo uklonili dosadno "Uvijek moram ažurirati i ne sviđa mi se to!"
Prije svega napravit ćemo skriptu. Ovu skriptu pozvat će cron i sadržavat će sve upute koje želimo da izvrši, stoga je potrebno testirati je u nekoliko slučajeva i na nekoliko načina prije nego što je uključite u cron, jednostavnu skriptu za ažuriranje poput ove:
#! / bin / bash # primjer ažuriranja skripte # odaberite distribuciju # debian-ubuntu # apt-get update & apt-get -y upgrade #fedora #yum -y update #Arch #pacman --noconfirm -Syu
Uklonite # sa vaše distro linije. U slučaju da je Ubuntu / Debian, započinje s apt-get.
Skriptu čuvamo kao update.sh (npr. Direktorij skripti u vaš dom). Dozvole za izvršavanje navedene skripte mijenjamo sa:
chmod a + x ~ / scripts / update.sh
Izvršimo skriptu nekoliko puta kako bismo provjerili radi li sve glatko, modificiramo ono što je potrebno (ne smije sadržavati pogreške, inače će cron samo ponoviti grešku iznova i iznova). Sada da dodamo zadatak u naš crontab.
Dodajte zadatke u crontab
Izvedbu crontaba izvršavamo pomoću crontab -e, u nekim distro-ovima (poput Ubuntu-a) daje nam mogućnost da izaberemo uređivač teksta koji želimo, ostalo nam ostaje vi. Datoteka crontab izgledat će otprilike ovako.
# mh dom mon dow korisnička naredba
gde:
- m odgovara minuti izvršenja skripte, vrijednost se kreće od 0 do 59
- h tačno vrijeme, obrađuje se 24-satni format, vrijednosti se kreću od 0 do 23, a 0 je 12:00 ponoći.
- dom odnosi se na dan u mjesecu, na primjer možete odrediti 15 ako želite da se pokrećete svakih 15 dana
- dole označava dan u sedmici, može biti numerički (0 do 7, gdje su 0 i 7 nedjelja) ili prva 3 slova dana na engleskom: ponedjeljak, utorak, srijeda, čet, pet, sub, sunce.
- korisnik definira korisnika koji će izvršiti naredbu, može biti root ili drugi korisnik sve dok imaju dozvole za izvršavanje skripte.
- naredba odnosi se na naredbu ili apsolutni put skripte koja se izvršava, primjer: /home/usuario/scripts/update.sh, ako zove skriptu, mora biti izvršna
Da budemo jasni, objašnjeno je nekoliko primjera cron zadataka:
15 10 * * * korisnik /home/user/scripts/update.sh
Pokretat će skriptu update.sh svaki dan u 10:15
15 22 * * * korisnik /home/user/scripts/update.sh
Pokretat će skriptu update.sh svaki dan u 10:15
00 10 * * 0 root apt-get -y update Korijenski korisnik
Ažurirat će se svake nedjelje u 10:00 sati
45 10 * * sunce root apt-get -y ažuriranje
Root korisnik će pokretati ažuriranje svake nedjelje (ned) u 10:45
30 7 20 11 * korisnik /home/usuario/scripts/update.sh
20. novembra u 7:30 korisnik će pokrenuti skriptu
30 7 11 11 korisnik sunca /home/usuario/scripts/pastel_con_velitas.sh
11. novembra u 7:30 i to je nedjelja, korisnik će proslaviti svog sysadmina (to jest, mene)
01 * * * * korisnik /home/usuario/scripts/molestorecordatorio.sh
Dosadan podsjetnik svakog minuta svakog sata svakog dana (NE preporučuje se).
I dalje se njima može rukovati posebni rasponi:
30 17 * * 1,2,3,4,5
U 5:30 popodne svakog dana od ponedjeljka do petka.
00 12 1,15,28 * *
U 12 sati svakog prvog, petnaestog i 28. u mjesecu (idealno za obračun plaća)
Ako je ovo zbunjujuće, crontab rukuje posebni nizovi za definiranje ovih raspona.
@reboot Pokreni jednom prilikom pokretanja
@yearly radi samo jednom godišnje: 0 0 1 1 *
@ godišnje isto kao i @godine
@mjesečno traje jednom mjesečno, prvi dan: 0 0 1 * *
@weekly Weekly prvi minut prvog sata u sedmici. 0 0 * * 0 ″.
@daily svakodnevno, u 12:00 A.M. 0 0 * * *
@midnight isto što i @daily
@hourly u prvoj minuti svakog sata: 0 * * * *
Njegova upotreba je vrlo jednostavna.
@hourly user /home/user/scripts/molestorecordatorio.sh @monthly user /home/user/scripts/backup.sh @daily root apt-get update && apt-get -y upgrade
Zadnji ali ne i posljednji:
Cron upravljanje poslom
crontab datoteku
Zamijenite postojeću crontab datoteku s korisnički definiranom datotekom
crontab -e
Uredite korisnikovu crontab datoteku, svaki novi redak bit će novi crontab zadatak.
crontab -l
Navedite sve korisničke zadatke crontab
crontab -d
Izbrišite korisnikov crontab
crontab -c red
Definira korisnikov direktorij crontab (ovaj mora imati korisnikove dozvole za pisanje i izvršavanje)
crontab -u korisnik
prefiks za rukovanje crontabom drugog korisnika, primjeri:
$ sudo crontab -l -u root $ sudo crontab -e user2 #crontab -d -u korisnik
Ovaj se alat, kao i mnogi drugi, može dublje i detaljnije vidjeti u: