Kako koristiti Cron na Linux Unixu

Što je cron?


Cron je naziv programa koji korisnicima Linux / Unixa omogućuje automatsko izvršavanje naredbi ili skripti (grupa naredbi) u određeno vrijeme ili datum. Obično se koristi za naredbe administrativnih zadataka, poput sigurnosnih kopija, ali može se koristiti za pokretanje bilo čega. Kako je definirano na stranicama cron man; to je demon koji izvršava zakazane programe.
U praktički svim distribucijama Linuxa Vixie Cron verziju koristi osoba koja ju je razvila, a to je Paul Vixie, jedan od velikih gurua Unixa, koji je između ostalih sustava i tvorac BIND -a koji je jedan od najpopularnijih DNS poslužitelja u svijetu.

Pokrenite cron


Cron je demon (usluga), što znači da ga je potrebno pokrenuti samo jednom, obično s istim pokretanjem sustava. Cron usluga naziva se crond. U većini distribucija usluga se automatski instalira i pokreće pri pokretanju sustava, može se provjeriti na nekoliko načina:
 1) etc / rc.d / init.d / crond status 2) /etc/init.d/crond status crond (pid 507) radi … 
U slučaju da imate instaliranu naredbu usluge:
 status crond usluge
 crond (pid 507) radi … 
može se pregledati i putem naredbe ps:
 ps -ef | grep crond
ako iz nekog razloga cron ne radi, možemo ga pokrenuti:
 /etc/rc.d/init.d/crond start Pokretanje crond: [OK]
[color = rgb (0,0,0)] Ako usluga nije konfigurirana za pokretanje od početka, bilo bi je dovoljno dodati je naredbom chkconfig: [/ color]
 chkconfig -razina 35 kruna dalje 
Ovime biste ga dodali za pokretanje razine 3 i 5, tako da počinje u vrijeme podizanja sustava.

Korištenje crona


Postoje najmanje dva različita načina korištenja crona:
Prvi je u direktoriju / etc, gdje ćete najvjerojatnije pronaći sljedeće direktorije:
  • cron.satno
  • cron.dnevno
  • cron.tjedno
  • cron.mjesečno
Ako se datoteka skripte nalazi u bilo kojem od ovih direktorija, tada će se skripta izvoditi svaki sat, svaki dan, svaki tjedan ili svaki mjesec, ovisno o direktoriju.
Da bi se skripta izvršila, mora biti nešto slično sljedećem:
 #! / bin / sh #script koji generira sigurnosnu kopiju cd / usr / documents tar czf * backup cp backup / other_directory /
Moramo popraviti da prvi redak počinje s #!, Što znači da je to bash ljuska skripta, drugi su redovi naredbe koje želimo da skripta izvrši. Ova se skripta može nazvati, na primjer, backup.sh, a također moramo promijeniti odgovarajuća dopuštenja kako bi se mogla izvršiti, na primjer:
 chmod 700 backup.sh ls -l backup.sh -rwx ------ 1 korijenski korijen 0 20. srpnja 09:30 backup.sh
"X" u vlasničkoj grupi dopuštenja (-rwx) označava da se može izvršiti.
Ako ostavimo ovu skriptu u cron.hourly, tada će se izvršavati svaki sat s jednom minutom svakog dana, kasnije ću objasniti zašto.
Drugi način pokretanja ili korištenja crona je izravno manipuliranje datotekom / etc / crontab. Prilikom zadane instalacije različitih distribucija Linuxa, ova će datoteka izgledati otprilike ovako:
 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
Prva četiri retka su varijable koje ukazuju na sljedeće:
LJUSKATo je 'ljuska' ispod koje kron prolazi. Ako nije navedeno, prema zadanim će se postavkama uzeti onaj koji je naveden u retku / etc / passwd koji odgovara korisniku koji izvršava cron.
STAZASadrži ili označava put do direktorija u kojima će cron tražiti naredbu za izvršavanje. Taj se put razlikuje od globalnog puta sustava ili korisnika.
POŠTOM NATo je ono kome se šalje izlaz naredbe (ako ima izlaz). Cron će poslati e -poruku onome tko je naveden u ovoj varijabli, odnosno mora biti važeći korisnik sustava ili nekog drugog sustava. Ako nije navedeno, tada će cron poslati poštu korisniku koji je vlasnik naredbe koja se izvršava.
DOMTo je korijenski ili glavni direktorij naredbe cron, ako tada nije naznačen, korijen će biti onaj koji je naveden u / etc / passwd datoteci koja odgovara korisniku koji izvodi cron.
The komentari su označeni sa # na početku retka.
Nakon gore navedenog dolaze redovi koji izvršavaju pravilno zakazane zadatke. Ne postoje ograničenja u broju zadataka koji mogu postojati, jedan po retku. Polja (Ima ih 7) te linije formiraju se na sljedeći način:
 Korisnička naredba Dan u mjesecu Dan u mjesecu Dan u tjednu u minuti
  • Polje: Opis
  • Minuta: Kontrolira minutu sata u kojem će se naredba izvršiti, ta vrijednost mora biti između 0 i 59.
  • Vrijeme: Kontrolira vrijeme izvršavanja naredbe, navedeno je u 24 -satnom formatu, vrijednosti moraju biti između 0 i 23, 0 je ponoć.
  • Dan u mjesecu: Dan u mjesecu u kojem želite izvršiti naredbu. Na primjer, 20 će biti naznačeno za izvršavanje naredbe 20. u mjesecu.
  • Mjesec: Mjesec u kojem će se naredba izvršavati može se označiti brojčano (1-12) ili imenom mjeseca na engleskom samo prva tri slova.
  • Radni dan: Dan u tjednu naredba će se izvršavati, može biti numerička (0-7) ili prema nazivu dana na engleskom, samo prva tri slova. (0 i 7 = nedjelja)
  • Korisnik: Korisnik koji izvršava naredbu.
  • Naredba: Naredba, skripta ili program koji želite pokrenuti. Ovo polje može sadržavati više riječi i razmaka.
Zvjezdica * kao vrijednost u prvih pet polja označit će početak-kraj polja, odnosno sve. Zvjezdica * u polju minuta označava sve minute.
Da bih bolje razumio ovo prvih 5 polja i zvjezdicu, bolje ću upotrijebiti nekoliko primjera:
Primjer:
 Opis 01 * * * * Radi 1 minutu svakog sata svakog dana 158 * * * U 8:15 sati svaki dan 15 20 * * * U 20:15 sati svakog dana 00 5 * * 0 U 5 sati ujutro svake nedjelje * 5 * * ned Svake minute od 5:00 u 5:59 sati svake nedjelje 45 19 1 * * U 19:45 sati 1. u mjesecu 01 * 20 7 * U 1 minutu svakog sata 20. srpnja 10 1 * 12 1 U 1:10 Svaki ponedjeljak u prosincu 00 12 16 * srijeda U podne 16. u mjesecu, a to je srijeda 30 9 20 7 4 u 9:30 sati od 20. srpnja, a to je četvrtak 30 9 20 7 * U 9:30 sati od 20. srpnja bez obzira na dan u tjednu 20 * * * 6 Do 20. minute svakog sata subotom 20 * * 1 6 Do 20. minute svakog sata subotom u siječnju 
Također je moguće navesti popise u poljima. Popisi mogu biti u obliku 1,2,3,4 ili u obliku 1-4 koji bi bili isti. Cron, na isti način, podržava povećanje popisa koji su označeni na sljedeći način:
 Vrijednost ili popis / prirast
Opet, popise i priraste lakše je razumjeti primjerima:
Primjer:
 Opis 59 11 * 1-3 1,2,3,4,5 U 11:59 sati Od ponedjeljka do petka, od siječnja do ožujka 45 * 10-25 * 6-7 U 45 minuta svih sati od 10 do 25 svih mjeseci i da je dan subota ili nedjelja 10,30,50 * * * 1,3,5 U 10, 30 i 50 minuta svih sati u ponedjeljak, srijedu i petak * / 15 10-14 * * * Svakih petnaest minuta od 10:00 sati u 14:00 sati * 12 1-10 / 2 2,8 * Svi zapisnici od 12 sati, u dane 1,3,5,7 i 9 veljače i kolovoza. (Prirast u trećem polju je 2 i počinje od 1) 0 * / 5 1-10,15,20-23 * 3 Svakih 5 sati od 1. do 10. dana, 15. dana i od 20. do 23. dana svakog mjeseca i da je dan srijeda 3/3 2/4 2 2 2 Svake 3 minute počevši od minute 3 (3,6,9, itd.) sati 2,6,10 itd. (svaka 4 sata počevši od sata 2) 2. veljače, a to je utorak
Kao što se može vidjeti u posljednjem primjeru, cron zadatak koji je dodijeljen tom retku s tim podacima izvršit će se samo ako je ispunjeno 5 polja (AND). Odnosno, za izvršavanje zadatka mora biti u utorak, 2. veljače u 02:03. Uvijek je logičko AND koje vraća vrijednost samo ako je svih 5 polja točno u određenoj minuti.
[color = rgb (0,0,0)] Prethodni slučaj tada jasno pokazuje da: [/ color]
Program cron se poziva svake minute i izvršava zadatke koje su njegova polja ispunila u toj točnoj minuti.
Uključujući polje korisnika i naredbu, retci crontaba tada bi mogli biti sljedeći:
 0 22 * ​​* * root /usr /dnevni backup.sh 0 23 * * 5 root /usr /tjedni backup.sh 0 8,20 * * * jcarrillo mail -s "sustav radi" [email protected]
Prva dva retka izvršava korisnik root, a prvi svaki dan u 22:00 izvršava skriptu koja generira dnevnu sigurnosnu kopiju. Drugi izvršava svaki petak u 23 sata skriptu koja generira tjednu sigurnosnu kopiju. Treći redak izvršava korisnik sergio, a izvršavao bi se u 8 ujutro i 8 navečer svakog dana, a naredba je slanje e -pošte na račun [email protected] s naslovom "sustav radi", način na koji administrator može biti svjestan da je udaljeni sustav aktivan u određeno vrijeme, ali ako u tom trenutku ne primi e -poruku, nešto nije u redu.
Biti korijen, onda je moguće, izravno izmijeniti crontab:
 vim / etc / crontab 
Ovo se izravno mijenja.

Pokretanje Crona s više korisnika, naredba crontab


Linux je sustav s više korisnika a cron je jedna od aplikacija koja podržava rad s više korisnika istovremeno. Svaki korisnik može imati vlastitu datoteku crontab, zapravo se pretpostavlja da je / etc / crontab datoteka crontab korijenskog korisnika, iako nema problema s uključivanjem drugih korisnika, pa stoga i šesto polje koje točno označava tko je korisnik. koja izvršava zadatak i potrebna je u:
 / etc / crontab

Ali kad normalni korisnici (pa čak i korijen) žele generirati vlastitu datoteku crontab, tada ćemo koristiti naredba crontab.
U direktoriju / var / spool / cron (može varirati ovisno o distribuciji), za svakog korisnika generira se cron datoteka, iako je ova datoteka tekstualna, ne treba je izravno uređivati.
Postoje dvije situacije koje izravno generiraju datoteku crontab naredbom:
 crontab -e
Pomoću kojeg će se otvoriti zadani uređivač (općenito vi) s datotekom koja se zove prazna crontab i gdje će korisnik unijeti svoju tablicu zadataka te će se automatski spremiti kao / var / spool / cron / user.
Drugi je slučaj da korisnik uređuje normalnu tekstualnu datoteku s unosima zadataka i kao primjer imenuje "my_cron", tada će naredba $> crontab my_cron biti zadužena za uspostavu kao korisnikova cron datoteka u / var / spool / cron / user:
 vi my_cron # briše datoteke iz zajedničke mape 0 20 * * * rm -f / home / sergio / shared / * # izvršava skriptu koja sigurnosno kopira mapu dokumenata prvog dana svakog mjeseca 0 22 1 * * / home / sergio / month support.sh # svakih 5 sati od ponedjeljka do petka, provjerava jesu li dozvole ispravne u mom domu 1 * 5 * * * 1-5 chmod -R 640 / home / sergio / *: wq ( file)> ls my_cron> crontab my_cron (postavljeno na / var / spool / cron / user)
Sažimajući gore navedeno i razmatrajući druge mogućnosti za crontab:
 crontab file.cron (postavit će file.cron kao korisnički crontab) crontab -e (otvorit će unaprijed postavljeni uređivač u kojem se datoteka crontab može stvoriti ili urediti) crontab -l (navodi trenutnu crontab korisnika, njihove cron poslove) crontab -r (uklanja korisnikov trenutni crontab)
Na nekim distribucijama pri uređivanju uobičajenih korisničkih crontaba potrebno je ponovno pokrenuti uslugu kako bi se datoteke crontab u / var / spool / cron mogle ponovno pročitati.
 restart usluge crond 
Kako biste bolje razumjeli kako pokrenuti / zaustaviti / ponovno pokrenuti usluge, u ovom ćete članku pronaći više informacija.

Kontroliranje pristupa cronu


Cron vam omogućuje da kontrolirate koji korisnici mogu ili ne smiju koristiti cron usluge. To se postiže na vrlo jednostavan način kroz sljedeće datoteke:
  • /etc/cron.allow
  • /etc/cron.deny
Da biste spriječili korisnika da koristi cron ili radije naredbu crontab, dovoljno je dodati svoje korisničko ime u datoteku /etc/cron.deny, kako bi se omogućilo njegovo korištenje, tada bi bilo potrebno dodati svoje korisničko ime u /etc/cron.allow, ako iz nekog razloga želite odbiti korištenje crona svim korisnicima, tada možete napisati riječ SVE na početku cron.deny i to bi bilo dovoljno.
 echo ALL >> / etc / cron.deny ili za dodavanje drugog korisnika u cron.allow echo juan >> / etc / cron.allow
Ako ne postoji ni datoteka cron.allow ni datoteka cron.deny, u teoriji je upotreba crona tada bez ograničenja korisnika. Dodavanje korisničkih imena u cron.allow, bez stvaranja datoteke cron.deny, imat će isti učinak kao i stvaranje s riječi ALL. To znači da nakon što je cron.allow kreiran s jednim korisnikom, ostali korisnici koji žele koristiti cron uvijek će morati biti navedeni u ovoj datoteci.
ZaključciRazgovarali smo o njegovom funkcioniranju, nadam se da ste razumjeli, neke distribucije poput Red Hat -a uključuju varijantu poput anacrona koja može nadoknaditi neke nedostatke crona, čak i tako, na bilo kojoj razini od najosnovnije do najnaprednije, koristi se cron , preporučljivo je razumjeti njegov rad. Ako nađete bilo kakvo pitanje ili imate prijedlog, ne ustručavajte se postaviti ga u komentarima.Je li vam se svidio i pomogao ovaj vodič?Autor možete nagraditi pritiskom na ovaj gumb kako biste mu dali pozitivan bod
wave wave wave wave wave