Osnove linux-a za web developere

Uvod

linux serveri

Svaki web developer u jednom trenutku dodje u poziciju da hostuje svoju aplikaciju na VPS-u koji je baziran na Linux operativnom sistemu i da mu je potrebno osnovno poznavanje administracije Linux servera.
Za olakšavanje administracije linux servera se često koriste specijalizovane aplikacije kao što je “Control panel”, “Plesk”… Medjutim ove aplikacije nisu besplatne, čak šta više, često koštaju skoro isto kao i iznajmljivanje samog VPS-a. Čak iako se zakupi licenca za administriranje servera, smatra se da je i pored toga poželjno (potrebno) da web developer ima osnovno znanje za rad sa Linux operativnim sistemom. Pokušao sam u ovome članku da zabeležim podatke vezane za linux operativni sistem i njegovo osnovno korišćenje kroz bash shell (terminal).

Bash shell

Za rad sa linux operativnim sistemom je predvidjen Bash Shell (terminal) koji korisniku omogućava:

  • izvršavanje komandi iz komandne linije
  • istorija prethodno izvršenih komandi
  • kontrola poslova (job control)
  • upotrebu shell funkcija i aliasa
  • aritmetičke operacije

NAPOMENA: Na windows 10 postoji mogućnost da se aktivira Linux subsistem sa svim linux opcijama, sa kojim jednostavno prebacujemo windows-ov CMD u “bash”. Pogledajete više o ovome u u članku “Instalacija alata za web development”.

Bash script

Fajl koji sadrži niz sukcesivno navedenih komandi koje se izvršavaju onim redosledom kojim su navedeni se naziva bash skripta i ima extenziju .sh.

Treba napomenuti da Unix sistem sve u okviru operativnog sistema predstavlja kao sekvence bajtova bez strukture, u to spadaju fajlovi ali i uređaji koji su priključeni na komjuter sa linux operativnim sitemom. Zbog toga se sav hardver (mrežne kartice, hard diskovi, particije, tastatura, štampač) tretira kao objekat sličan fajlu. Svaku hardversku komponentu predstavlja jedan specijalni fajl koji ima odgovarajući naziv i mesto u file sistemu (npr. memorija sistema je definisana kao fajl sa lokacijom /dev/mem, a terminal (tastatura i ekran) su definisani u fajlu /dev/tty1).

“In Linux everything is file”

Pristup serveru koristeći SSH protokol

Šta je SSH protokol?

Za konekciju i komunikaciju sa udaljenim linux sistemom se najčešće korisiti SSH protokol. Secure Shell (SSH) je kriptografski mrežni protokol za siguran rad mrežnih usluga preko nezaštićene mreže. SSH komande su šifrovane i sigurne jer oba kraja veze i klijenta i servera su autentifikovana koristeći digitalni sertifikat, a lozinke su zaštićene šifriranjem.
Protokol radi po modelu klijent-server, što znači da povezivanje inicira SSH klijent koji se povezuje na SSH server. SSH klijent upravlja procesom uspostavljanja veze i koristi kriptografiju javnog ključa da bi potvrdio identitet SSH servera. Nakon faze podešavanja protokol SSH koristi snažne simetrične algoritme za šifrovanje kako bi se osigurala privatnost i integritet podataka koji se razmjenjuju između klijenta i servera.

Konekcija na sistem sa SSH protokolom

Za konekciju na udaljeni server je potrebno:

  1. hostname IP
  2. username host-a
  3. password za korisnika

Udaljenom serveru se pristupa korišćenjem odgovarajućih naredbi, u zavisnosti da li je vaš user isti kao na serveru ili ne imamo dve različite naredbe. Ukoliko je vaš user isti kao i na serveru možemo koristi:

ssh ip-adresa-udaljenog-servera

Ali ako nije isti user onda koristimo:

ssh naziv-usera-udaljenog-servera@ip-adresa-udaljenog-servera

Nakon ovoga sistem zahteva da se unese odgovarajuća šifra, naposletku za prekid sesije se koristi naredba:

exit

Aplikacije koje podržavaju SSH protokol

Za pristup udaljenom serveru nam je potreban bash (terminal), postoji već pomenuta mogućnost da se windows-ov CMD prebaci u bash ali to važi samo za WIN 10, za korisnike starijih windows izdanja je rešenje neka od third part aplikacija koji emuliraju linux bash:

  • Putty
    Putty je najstarija windows aplikacija za komunikaciranje sa udaljenim sistemom koja koristi SSh protokol, dok je većina ostalih aplikacija “ulepšana” varijacije sa dodatnim mogućnostima.
  • PuttyTray
  • Kitty
  • Mobaxterm
  • mRemoteNG
  • Smartty

Kopiranje i sinhronozaovanje fajlova sa Rsync

Rsync je brz i izuzetno prilagodljiv alat za kopiranje fajlova. Može kopirati fajlove lokalno, kao i sa drugog domaćina. On nudi veliki broj opcija i omogućava fleksibilnu specifikaciju izbora datoteka koje treba kopirati. Poznat je po algoritmu prenosa “delta”, koji smanjuje količinu podataka poslatih preko mreže,tako što šalje samo razlike između izvornih datoteka i postojećih datoteka u odredištu.

Postoje dva različita načina da Rsync da stupi u kontakt sa udaljenim sistemom: koristeći SSH ili direktno kontaktiranjem dinamičkog Rsync preko TCP-a.

rsync options source destination

NAPOMENA:
Korišćenjem SSH protokola se prenose podaci sigurnom vezom sa šifrovanjem.Da bi ste koristili SSH protokol morate da navedete root lozinku da biste je povezali, a pomoću opcije SSH će se šifrirati šifrirani način tako da će vaša lozinka biti sigurna.

Dodatne opcije su:

  • -v => verbose opcija jednostavno proizvodi izlaz na ekranu koji pruža komentare o radu dok se pojavljuju, tako da ćete u realnom vremenu prikazivati status korisničkog programa ili programa za pokretanje zadataka ili naredbi koje ste poslali.
  • -r => kopira podatke rekurzivno (kopiranje direktorijuma i svih njegovih datoteka i poddirektorijuma i svih njihovih datoteka, sve dublje i dublje do dna stabla direktorijuma).
  • -a => archive mode omogućava rekurzivno kopiranje fajlova pri čemu čuva simboličke veze, file permissions, vlasničke i vremenske oznake.
  • -z => kompresuje fajlove
  • -h => human-readable format
  • -d => transfer direktorijuma bez rekurzije
  • -e => specify the ssh as remote shell

a) Rad sa fajlovima na lokalu

Naredba Objašnjenje
rsync -zvh test.txt /home/test1/ Fajl test.txt će biti kopiran ili sinhronizovan unutar foldera test1 čija je putanja /home/test1/
rsync -t *.c foo:src/ Prethodna naredba bi prenela sve datoteke koje odgovaraju obrazcu * .c iz trenutnog direktorijuma u ​​direktorijum “src” na mašini “foo”. Ako bilo koja od datoteka već postoji na udaljenom sistemu, onda se protokol rsinc daljinskog ažuriranja koristi za ažuriranje datoteke slanjem samo razlika.
rsync -avz foo:src/bar /data/tmp Ovo bi rekurzivno prekopiralo sve datoteke iz direktorijuma src/bar na mašini foo u direktorijum /data/tmp/bar na lokalnoj mašini. Datoteke se prenose u režimu “lqarchiverq”, što osigurava da se u prenosu čuvaju simboličke veze, uređaji, atributi, dozvole, vlasništva itd. Pored toga, kompresija će se koristiti za smanjenje veličine dijelova podataka prenosa.
rsync -avz foo:src/bar/ /data/tmp
Dodatna kosa crtna na izvoru foo:src/bar/ omogućava da se izbegne stvaranje dodatnog nivoa direktorijuma na odredištu.

b) Sinhronizacija sa lokalnog servera na udaljeni

Opšti izgled naredbe:

rsync options izvorni_fajl naziv_usera@ip_adresa_udaljenog_servera:destinacija
Primer
Naredba SSH Objašnjenje
rsync -avzh public_html/test.txt root@22.22.22.22:/home/ NE
Sa ovom komandom je fajl test.txt koji se nalazi u lokalnoj mašini kopiran ili sinnhronizovan na mašinu sa IP adresom 22.22.22.22 u direktorijum home.
rsync -avzhe ssh public_html/test.txt root@22.22.22.22:/home/ DA
Sa ovom komandom je fajl test.txt koji se nalazi u lokalnoj mašini kopiran ili sinnhronizovan na mašinu sa IP adresom 22.22.22.22 u direktorijum home koristeći SSH protokol.

c) Sinhronizacija sa udaljenog servera na lokalni

Opšti izgled naredbe:

rsync options naziv_usera@ip_adresa_udaljenog_servera:izvorni_fajl destionacija
Primer
Naredba SSH Objašnjenje
rsync -avzh root@22.22.22.22:/home/test.txt /home/test/ NE
Sa ovom naredbom kao korisnik “root” kopiramo sa servera čija je IP adresa 22.22.22.22 iz foldera home fajl test.txt na naš lokalni server u folder home/test/
rsync -avzhe root@22.22.22.22:/home/test.txt /home/test/ DA
Sa ovom naredbom kao korisnik “root” kopiramo sa servera čija je IP adresa 22.22.22.22 iz foldera home fajl test.txt na naš lokalni server u folder home/test/ koristeći SSH protokol
sync -avze ssh --exclude '*txt' rroot@22.22.22.22:/home/test.txt home/test/ DA
Sa ovom naredbom kao korisnik “root” kopiramo sa servera čija je IP adresa 22.22.22.22 iz foldera home sve osim “.txt” fajlova na naš lokalni server u folder home/test/ koristeći SSH protokol

Struktura Linux file sistema

Na slici je prikazana najčešća struktura file sitema Linux opertativnog sistem. Najvažniji direktorijum je Root i on jedini nema roditeljski direktorijum. Označava se sa kosom crtom “/” i pristup ovome direktorijumu ima samo “root” user. Ukoliko putanja koja definiše mesto nekog fajla ili direktorijuma počninje sa kosom crtom “/” znamo da je u pitanju absolutna putanja. Relativna putanja je definisana u udnosu na trenutnu poziciju i počinje sa “./”, pošto se na ovaj način obeležava trenutni direktorijum.

linux directory system

/bin

U ovome direktorijumu se čuvaju binarne izvršne komande, kao što su: ps, ls, ping, grep, cp….

/etc

Sadrži konfiguracione fajlove za sve programe, kao i shell skripte za započinjenje i gašenje aplikacija.

/dev

Linux predstavlja uređaje kao fajlove, pa ovaj direktorijum sadrži više specijalnih fajlova koji predstavljaju uređaje. Npr. “/dev/sda” predstavlja prvi SATA disk u sistemu.

/home

U ovaj folder se čuvaju privatni i konfiguracijski fajlovi za svakog korisnika. Svaki korisnik ima samo “write” pristup u svome direktorijumu, za pisanje u drugim direktorijumima potrebno je da bude root korisnik.

/media

Ovaj direktorijum sadrži poddirektorijumeje u kojima su prikazani prenosivi mediji ubačeni u računar.

/root

Ovaj direktorijum je direktorijum root korisnika. Umesto da se nalazi na “/home/root”, sa ostalim user-ima on nalazi se ovde.

/srv

Ovaj direktorijum sadrži podatke za usluge koje pruža sistem. Npr. ako koristte Apache HTTP server za servisiranje veb stranica, verovatno ćete uskladištiti datoteke vašeg veb sajta u direktorijumu unutar /srv direktorijuma.

/tmp

Aplikacije čuvaju privremene fajlove u ovom direktorijumu. Fajlovi u ovome direktorijumu se generalno brišu kad god se vaš sistem ponovo pokrene i može se u bilo kom trenutku izbrisati pomoćnim programima kao što je “tmpvatch”.

/usr

Ovaj direktorijum sadrži aplikacije i fajlove koje koriste korisnici, za razliku od aplikacija i fajlova koje koristi sistem. Npr. ne-esencijalne aplikacije se nalaze unutar direktorija “/usr/bin” umesto direktorijuma /bin, a lokalni direktorijum “/usr/local” se koristi kao mesto za instaliranje lokalnih aplikacija čime se sprečava da nepotrebno “zagadi” ostatak sistema.

/var

U ovaj direktorijum se snimaju promenjivi (varijabilni) fajlovi. Fajlovi čiji sadržaje se očekuje da raste može se pronaći pod ovom direktorijumu. To najčešće uključuje: system log files (/var/log), packages and database files (/var/lib), ili emails (/var/mail)…

Osnovne linux komande

Pomoć pri pisanju naredbi

U radu sa Bash shell-om se koristimo:

  • Tab na tastaturi predstavlja ogromnu pomoć pri pisanju Linux komandi, jer će automatski popuniti imena fajlova i direktorijuma.
  • Simboli “?” i “*” su wildcard u Linux-u. Znak pitanja “?” će zameniti jedan karakter, dok će “*” zameniti ceo string.
  • Kopiranje teksta u okviru terminala je sa naredbom Ctrl+Shift+C dok je paste se naredbom Ctrl+Shift+V (ukoliko naredba ne radi, probati desni klik ili komandu iz context menija).

Sintaksa naredbi

Sve komande u Linux-u se mogu predstaviti sa sledećim šablonom:

[sudo] command [optional switch] [file or directory path]
Naredba Objašnjenje
[command] --help Izlistava opcije za korišćenje komande
man [command] Prikazaju uputstvo (eng. “manual”) za traženu komandu.
sudo [command] Komanda se izvršava sa administratorskim pravima

Bash prečice

Naredba Objašnjenje
CTRL + c
Zaustavlja izvršenje trenutne naredbe
CTRL + z
Sleep program
CTRL + a
Šalje kursor na početak naredbe
CTRL + e
Šalje kursor na kraj naredbe
CTRL + u
Briše sve karaktere od početka do kursora
CTRL + k
Briše sve karaktere od kursora pa sve do kraja linije
CTRL + r
Pretraga kroz korišćene naredbe (izlistavnje sa ponovnim CTRL + R)
!!
Repeat last command
!<em>abc</em>
Pokreće poslednju naredbu koja počinje sa abc
!<em>abc</em>:p
Štampa u terminalu poslednju naredbu koja počinje sa abc
!*
Štampa sve argumente iz prethodne naredbe

Monitoring i informacije

Naredba Objašnjenje
ps rikazuje sve trenutno aktivne procese koje je inicirao user
ps -ef Prikazuje sve trenutno aktivne procese
ps -ef | grep nazivprocesa
Filtrira procese prema nazivu procesa i prikazuje informacije o izabranom procesu u terminalu (linux pipeline: kada “ps -ef” izlista sve trenutne procese onda “grep” filtrira izlistane procese prema definisanom nazivu procesa)
kill processID Ubija proces čiji ID je naznačen
killall processName Ubija proces čije ime je processName
du -sh naziv_foldera/* Izlistava veličinu svih poddirektorijuma ili fajlova unutar trženog direktorijuma
vmstat Prikazuje statistiku virtualne memorije
cat /proc/meminfo Prikazuje podatke o memoriji
cat /proc/cpuinfo Prikazuje podatke o procesoru
free -h Prikazuje slobodnu i zauzetu memoriju ( -h za human readable, -m za MB, -g za GB.)
id Prikazuje id od usera i njegove grupe
last Prikazuje listu poslednje logovanih usera na sistem
ifconfig -a Prikazuje sve podatke o network interfejsu i IP adresi
ping webprogramiranje.org Šalje kontrolnu poruku do traženog host-a i štampa odgovor
dig webprogramiranje.org Prikazuje DNS informacije o traženom host-u
netstat -nutlp Prikazuje sve tcp i udp portove koji osluškuju saobraćaj
badblocks -s /dev/sda Testiranje hard diska

Rad sa file sistemom

Naredba Objašnjenje
pwd
Štampa u terminalu putanju trenutnog direktorijuma
mkdir  test-direktorijum
Pravi novi direktorijum test-direktorijum
cd test-direktorijum
Ulazak u direktorijum test-direktorijum
cd ..
Go up a directory
ls
Izlistava sve fajlove u trenutnom working direktorijumu
ls -a
Izlistava sve fajlove u trenutnom working direktorijumu uključujući i hidden
ls -R
Rekurzivno izlistava sve fajlove u trenutnom working direktorijumu uključujući sve poddirektorijume
ls -t
Izlistava sve fajlove u trenutnom working direktorijumu sortirane prema filteru last modified
ls -S
Izlistava sve fajlove u trenutnom working direktorijumu sortirane prema filteru size
ls -l
Izlistava sve fajlove u trenutnom working direktorijumu u punom formatu
ls -1
Izlistava sve fajlove u trenutnom working direktorijumu – svaki fajl u novu liniju
ls -m
Izlistava sve fajlove u trenutnom working direktorijumu, fajlovi su razdvojeni zarezom.
touch novi_fajl.txt
Kreira novi fajl pod nazivom novi_fajl.txt
less neki_fajl

Štampa sadržaj tekstualnog fajla neki_fajl u terminalu (izlazak sa “Q”)
cat neki_file1 neki_file2

Štampa u terminalu tekstualni sadržaj fajlova (ukoliko ih ima više spaje sve u jedan ispis)
file file1
Štampa u terminalu podatke o fajlu file1
cp pic.jpg pic2.jpg

Kopira fajl u working direktorijumu pic.jpg i snima ga kao novi fajl pod imenom pic2.jpg isto u working direktorijumu
cp /home/pic.jpg /home/backup/pic.jpg
Iz direktorijuma home se kopira fajl pic.jpg i snima se u direktorijum backup kao novi fajl pod imenom pic.jpg
cp -R /home/slike /home/backup

Kopira ceo direktorijum slike sa svim poddirektorijumima u folder backup (prvi postaje poddirektorijum od foldera backup)
cp *.jpg /home
Kopira sve fajlove sa ekstenzijom .jpg u working direktorijumu i snima ih u home direktorijum sa istim nazivima
mv /home/file1 /home/file2
Rename fajl file1 iz foldera home u file2
mv /home/file1 /tmp/file2

Move fajl file1 iz foldera home u folder tmp i čuva ga kao fajl file2
rm file1

Briše fajl file1
head file1

Štampa u terminal prvih 10 linija tekstualnog fajla file1
tail file1

Štampa u terminal poslednjih 10 linija tekstualnog fajla file1
tail -3 file1

Štampa u terminalu poslednje 3 linije tekstualnog fajla file1

Search

Naredba Objašnjenje
grep <em>"neki tekst"</em> <em>/home/logovi.txt</em>
Pretraga teksta “neki tekst” unutar fajla logovi.txt. Ukoliko postoji rezultat, on se štampa u terminalu
grep -r <em>"neki tekst"</em> /home/
Rekurzivna pretraga teksta kroz sve fajlove u okviru home direktorijuma i njegovih podirektorijuma
grep -i <em>"neki tekst"</em> /home/
Case insens­itive pretraga teksta “neki tekst” kroz sve fajlove u okviru home direktorijuma
find <em>/home/</em> -name <em>"test*"</em>
Pretraga fajlova u okviru home direktorijuma prema imenu (-name), a koje započinje sa test
find <em>/home/</em> -user <em>"pera"</em>
Pretraga fajlova u okviru home direktorijuma prema useru (-user), čije ime započinje sa pera
find <em>/home/</em> -mmin <em>60</em>
Pretraga za svim fajlovima u okviru home direktorijuma koji su modifikovani u zadnjih 60 minuta
find <em>/home/</em> -amin <em>60</em>
Pretraga za svim fajlovima u okviru home direktorijuma kojima je pristupano (access) u zadnjih 60 minuta
find <em>/home/</em> -size <em>60M</em>
Pretraga za svim fajlovima u okviru home direktorijuma koji su veći od 60MB
find /home/ -size +50M -size -100M
Pretraga za svim fajlovima u okviru home direktorijuma koji su veći od 50MB a manji 0d 100MB
find /home -type f -empty
Pretraga za svim fajlovima u okviru home direktorijuma koji su prazni
find /home -type d "test"
Pretraga za direktorijumima u okviru home direktorijuma pod nazivom “test”
find /home -type d -empty
Pretraga za direktorijumima u okviru home direktorijuma koji su prazni

File permissions

Naredba Objašnjenje
chmod 644 file.html

Vlasnik može da čita i piše (4+2), grupa može da čita, i ostali mogu da čitaju
chmod u=rw example.jpg

Vlasnik može da čita i piše (4+2)
chmod -R 755 nekifolder

Rekurzivno promeniti permisije u direktorijumu pod nazivom “nekifolder” i svim njegovim poddirektorijumima tako da vlasnik može da čita i piše i izvršava(4+2+1), grupa može da čita i izvršava (4+0+1), a ostali mogu da čitaju i izvršavaju (4+0+1)
chmod 775 <em>file</em>

Promena permisija Change mode of file to 775
chmod -R 600 <em>nekifolder</em>
Rekurzivna promena permisija na 600 za nekifolder i svih njegovih fajlova i podfoldera
chown <em>user</em>:<em>group</em> <em>nekifile</em>

Promena vlasništva nad fajlom nekifile ne group
OBJAŠNJENJE:
linux permision

User: Read, Write, and eXecute => u=rwx
Grupa: Read and eXecute => g=rx
Others: Read => o=r

  • “read” = 4
  • “write” = 2
  • “execute” = 1
  • “no permission = 0
  • 5 je kombinacija permisija 4+0+1 (read, no write, and execute)
  • 6 je kombinacija permisija 4+2+0 (read, write, and no execute)
  • 7 je kombinacija permisija 4+2+1 (read, write, and execute)

chmod u=rwx,g=rx,o=r nazivfajla je ekvivalentno sa chmod 754 nazivfajla

Arhiviranje

Komanda “tar” spaja više fajlova u jedan tj. kreira arhivu, takva arhiva može da se kompresuje sa “gzip” algoritmom.

Naredba Objašnjenje
tar -cf archive.tar file1 file2 Pravljenje jedne arhive od dva fajla
tar -cf archive.tar mydir/ Kreiranje arhive od direktorijuma “mydir”
tar -czvf naziv_arhive.tar.gz /home/test
Od izabranog direktorijuma “test” kreira kompresovanu arhivu pod nazivom naziv_arhive.tar.gz
tar -czvf naziv_arhive.tar.gz test U radnom direktorijumu od izabranog direktorijuma “test” kreira kompresovanu arhivu pod nazivom naziv_arhive.tar.gz
tar -xf archive.tar Extrahuje arhivu
tar -xzvf archive.tar.gz Extrahuje kompresovanu arhivu
tar -xvf archive.tar documents/work/budget.doc Extrahuje samo documents/work/budget.doc fajl iz arhive archive.tar
tar -xvf archive.tar documents/work/ Extrahuje samo documents/work/ direktorijum i njegove fajlove iz arhive archive.tar
tar -czf DogPhotos.tar.gz --exclude='kitty.jpg' MyPetPhotos Pravi arhivu DogPhotos.tar.gz od fajlova u direktorijumu “MyPetPhotos” iz kojih je izbačeni fajlov sa imenom kitty.jpg

OBJAŠNJENJE:
–create ili (-c) => kreira novu .tar arhivu
–verbose ili (-v) – verbose opcija prikazuje status korisničkog programa
–file ili (-f) => indikuje da će sledeći argument u naredbi biti ime archive fajla
–gzip ili (-z) => kompresuje arhivu sa gzip algoritmom
–extract ili (x) – ekstrahuje arhivu
–ignore-case => ignoriše veličinu slova kada pretražuje po zadatom šablonu
–overwrite => briše početni ne kompresovan fajl a na njegovo mesto stavlja kompresovani
–recursion => rekurzija je podrazumevano podešavanje
–no-recursion => bez rekurzije
–exclude=PATTERN => izbacuje iz selekcije definisani šablon

Pipe

Pipe je oblik redirekcije koji se koristi u Linux-u i drugim Unix-like operativnim sistemima za slanje izlaza jednog programa u drugi program na dalju obradu. Obeležava se sa vertikalnom linijom | izmedju dve naredbe.

komanda_1 | komanda_2 | komanda_3

U prethodnom primeru će se prvo izvršiti komanda_1 nakon čega će njen izlaz komanda_2 uzeti kao ulazne parametre i obraditi ih, a nakraju će tako obradjene podatke uzeti komanda_3 i takodje ih obraditi.

Primer

ls -al | grep '^d'

Ova kombinacija naredbi izlistava samo podirektorijume trenutnog working direktorijuma.

Primer

$ls -l | grep -i "neki_naziv"

Ova kombinacija naredbi izlistava sadržaj trenutnog working direktorijuma, a zatim filtrira prema željenom nazivu (nije bitna veličina slova -i = insenitive).

Primer

ls -la | sort -nk5

Ova kombinacija naredbi izlistava sadržaj trenutnog working direktorijuma, i sortira ga prema numeričkim vrednostima u 5-toj koloni.

Cron job

Cron je naziv programa koji omogućava unix korisnicima da izvršavaju komande ili skripte (grupe komandi) automatski u određeno vreme/datum. Cron je deamon, što znači da ga je potrebno samo jednom pokrenuti, nakon čega će čekati naredbu. Cron deamon koristi cron tabele da u njima definiše koje zadatke treba da pokreće i kada. Svaka linija cron tabele predstavlja jedan posao za izvršavanje u definisanom vremenskom razdoblju.

Cron sintaksa

Format jedne linije cron tabele izgleda ovako:

(Minute 0-59) (Hour 0-23) (Day of Month 1-31) (Month 1-12) (Day of week 0-7) (Command)

Naredba Objašnjenje
@reboot ~/backup-home.sh Skripta će se startovati jednom posle reboot.
@yearly ~/backup-home.sh Skripta će se startovati godišnje
@monthly ~/backup-home.sh Skripta će se startovati mesečno
@weekly ~/backup-home.sh Skripta će se startovati nedeljno
@daily ~/backup-home.sh Skripta će se startovati svakodnevno
@hourly ~/backup-home.sh Skripta će se startovati na svaki sat
*/2 * * * * ~/backup-home.sh U ovome slučaju će skripta biti startovana na svaka 2 minuta.
* 17-20 * * * ~/backup-home.s
Skripta “backup-home.sh” će biti startovana u 17, 18, 19, i 20 sati svakoga dana.
0 5 1,15 * * ~/backup-home.sh Definisano je da se izvrši “backup-home.sh U 5:00 AM svakog 1-og i 15-tog u mesecu.
0 5 1 * * ~/backup-home.sh Definisano je da se izvrši “backup-home.sh U 5:00 AM svakog 1-og u mesecu.

Crontab

Crontab je komanda koja se koristi za izlistavanje tablica koje koristi cron daemon.

Naredba Objašnjenje
crontab -a naziv_cron_fajla
Kreiranje kron fajla
crontab -l
Štampanje sadržaja crontab fajla u terminalu.
crontab -e Editovanje crontab fajla, ili kreiranje ako već ne postoji. Kada prvi put pokušamo da uredimo našu crontab datoteku, od nas će biti zatraženo da izaberemo tekst editor.
crontab -r Brisanje crontab fajla.