|
Lucaine objavio maloprije izvrstan tutorial o cron-u i crontabu koje mislim da je vrijedno podijeliti. Cron je svojevrsni ekvivalent planiranim zadacima u sustavu Windows, samo da se njime rukuje s terminala. Oni koji vole vizualno suÄelje da bi postigli isti cilj, mogu to vidjeti drugog Älanka. |
Ć to je cron?
Naziv cron potjeÄe od grÄkog chronos ĆĄto znaÄi "vrijeme". U operacijskom sustavu Unix, cron je redoviti upravitelj pozadinskih procesa (demon) koji pokreÄe procese ili skripte u redovitim intervalima (na primjer, svake minute, dana, tjedna ili mjeseca). Procesi koji se moraju izvrĆĄiti i vrijeme u kojem se moraju izvrĆĄiti navedeni su u datoteci crontab.
Como radovi
Cron demon zapoÄinje od /etc/rc.d/ o /etc/init.d ovisno o raspodjeli. Cron radi u pozadini, provjerava tablicu zadataka crontab svake minute / etc / crontab ili u / var / spool / cron u potrazi za zadacima koje treba obaviti. Kao korisnik moĆŸemo dodati naredbe ili skripte sa zadacima u cron kako bismo automatizirali neke procese. Ovo je korisno, na primjer, za automatizaciju aĆŸuriranja sustava ili dobrog sigurnosnog sustava.
Ć to 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, dopuĆĄtenja za izvrĆĄenje i to Äe uÄiniti u pozadini. Svaki korisnik moĆŸe imati vlastitu 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 upotrijebiti naredbu crontab.
Crontab je najlakĆĄi naÄin upravljanja cron zadacima na viĆĄekorisniÄkim sustavima, bilo kao jednostavan korisnik sustava ili kao root korisnik.
KoriĆĄtenje crontaba
PoÄinjemo s jednostavnim primjerom.
Automatizirat Äemo aĆŸuriranje sustava kako bismo uklonili dosadno "Uvijek se moram aĆŸurirati i to mi se ne sviÄa!"
Prije svega napravit Äemo scenarij. Ovu Äe se skriptu pozvati cron i sadrĆŸavat Äe sve upute koje ĆŸelimo da uÄini, stoga ju je potrebno testirati 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 # s vaĆĄe distro linije. U sluÄaju da je Ubuntu / Debian, zapoÄinje s apt-get.
Skriptu spremamo kao update.sh (npr. Direktorij skripti u vaĆĄ dom). DopuĆĄtenja za izvrĆĄavanje navedene skripte mijenjamo sa:
chmod a + x ~ / skripte / aĆŸuriranje.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 s crontab -e, u nekim distro-ovima (poput Ubuntu-a) daje nam moguÄnost da odaberemo ureÄivaÄ teksta koji ĆŸelimo, ostalo nam ostaje vi. Datoteka crontab izgledat Äe otprilike ovako.
# mh korisniÄka naredba dom mon dow
gdje je:
- m odgovara minuti izvrĆĄenja skripte, vrijednost se kreÄe od 0 do 59
- h toÄno vrijeme, obraÄuje se 24-satni format, vrijednosti se kreÄu od 0 do 23, 0 je 12:00 ponoÄi.
- dar odnosi se na dan u mjesecu, na primjer moĆŸete navesti 15 ako ĆŸelite trÄati svakih 15 dana
- Dow znaÄi dan u tjednu, 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 * * aĆŸuriranje korijena sunca apt-get -y
Root korisnik Äe pokretati aĆŸuriranje svake nedjelje (nedjelja) u 10:45
30 7 20 11 * korisnik /home/usuario/scripts/updata.sh
20. studenog u 7:30 korisnik Äe pokrenuti skriptu
30 7 11 11 korisnik sunca /home/usuario/scripts/pastel_con_velitas.sh
11. studenog u 7:30 i to je nedjelja, korisnik Äe proslaviti svog sysadmina (to jest, mene)
01 * * * * korisnik /home/usuario/scripts/molestorecordatorio.sh
Dosadan podsjetnik svake minute svakog sata svakog dana (NE preporuÄuje se).
JoĆĄ uvijek se njima moĆŸe rukovati posebni rasponi:
30 17 * * 1,2,3,4,5
U 5:30 popodne svaki dan 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
@monthly radi jednom mjeseÄno, prvi dan: 0 0 1 * *
@weekly Weekly prva minuta prvog sata u tjednu. 0 0 * * 0 âł.
@daily svakodnevno, u 12:00 A.M. 0 0 * * *
@ponoÄ isto kao i @daily
@hourly u prvoj minuti svakog sata: 0 * * * *
Njegova je upotreba 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
Posljednje, ali ne najmanje vaĆŸno:
Cron upravljanje poslom
crontab datoteku
Zamijenite postojeÄu datoteku crontab korisniÄkom datotekom
crontab -e
Uredite korisniÄku crontab datoteku, svaki novi redak bit Äe novi crontab zadatak.
crontab -l
Navedite sve korisnikove zadaÄe crontab
crontab -d
IzbriĆĄite korisnikov crontab
crontab -c red
Definira korisnikov direktorij crontab (on mora imati korisnikova dopuĆĄtenja za pisanje i izvrĆĄavanje)
korisnik crontab -u
prefiks za obradu crontaba 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: