Uvod
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:
- hostname IP
- username host-a
- 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:
Ali ako nije isti user onda koristimo:
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:
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.
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:
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:
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.
/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:
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 insensitive 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
|
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)
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:
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. |
Odličan tekst za svakog ko planira da krene sa učenjem Linux-a!
Hvala na podršci!