You are on page 1of 18

Sadraj

JEZGRO ................................................................................................................................................................................ 2
Periferije - Linuks................................................................................................................................................................. 4
PERIFERIJE - WINDOWS....................................................................................................................................................... 6
Upravljanje memorijom - Linuks ......................................................................................................................................... 6
Upravljanje memorijom - Windows .................................................................................................................................... 7
Administracija sistema - Linuks ........................................................................................................................................... 8
Administracija sistema - Windows .................................................................................................................................... 14
Skriptovi pod Linuksom ..................................................................................................................................................... 15

Materijal za III kolokvijuma

JEZGRO
Jezgro (kernel) operativnog sistema je u stvari operativni sistem u uem smislu. Kada kaemo Linuks, strogo govorei
radi se samo o jezgru. Distribucija Linuksa je softver koji koristimo, a sastoji se iz jezgra i prateih programa (shella,
grafikog okruenja, korisnikih programa, pomonog softvera itd.). Jezgro vri poslove vezane za upravljanje procesima i
memorijom, a, u zavisnosti od konkretnog sistema, moe vriti i upravljanje sistemom datoteka, ureajima itd.
Jezgro operativnog sistema izvrava se u tzv. privilegovanom reimu, koji se esto referie i kao ring 0. Ostali programi
se izvravaju u korisnikom prostoru (tzv. userland ili ring 3).
Jezgra se mogu klasifikovati u dve osnovne grupe: mikrokernel i monolitna jezgra.
Kod mikrokernela jezgro vri samo elementarne funkcije vezane za rasporeivanje procesa i memorije. Svi ostali poslovi
izmeteni su u userland i realizovani u vidu servisa. Ovakvo jezgro je stabilno, jer otkaz nekog servisa ne naruava rad
samog jezgra. Sa druge strane, mikrokernel radi sporije, zbog potrebe za estim prelaskom iz privilegovanog reima u
userland. Primer sistema koji je realizovan kao mikrokernel je MINIX.
Kod monolitnog kernela u samom jezgru su integrisani i drajveri, odnosno upravljaki programi, kojima se upravlja
hardverom. Ovakva jezgra su bra od mikrokernela, ali im stabilnost zavisi od stabilnosti drajvera. Primeri monolitnog
kernela su Linuks i Windows (2000, XP, Vista, 7).
Hibridna jezgra spajaju osobine mikrokernela i monolitnog jezgra. Primer hibridnog jezgra je Windows NT.
Linuksovo jezgro je monolitno i modularno. To znai da se pojedini drajveri mogu izvesti posebno, u vidu modula, koji se
uitavaju i iitavaju po potrebi.
Jezgro Linuksa izdaje se zvanino na sajtu www.kernel.org i Linus Torvalds lino odobrava izdavanje novih verzija.
Ovakve, stabilne izvorne verzije, poznate su i kao vanila. Autori distribucija Linuksa kreiraju svoje verzije, prilagoene
odreenom profilu sistema. Ovakve verzije poznate su kao stock kerneli.
Verzija jezgra moe se otkriti komandom uname.

Jo detaljnije informacije dobijaju se sa uname -a:

Kod oznake jezgra vana je injenica da drugi broj, ako je paran, oznaava stabilno jezgro. Neparan drugi broj oznaava
jezgro koje se i dalje testira i takav Linuks ne treba instalirati u produkcionom okruenju (server, desktop).
Na sistemu se moe instalirati vie jezgara, izmeu kojih se zatim vri izbor pri pokretanju sistema (preko grub bootloadera). Novo jezgro se moe instalirati direktno u kompajliranom obliku (preko sistema za auriranje u konkretnoj
distribuciji) ili kompajliranjem izvornog koda.
2

Materijal za III kolokvijuma

Instaliranje novog jezgra vri se zbog razliitih motiva: staro jezgro sadri greke, tei se optimizaciji itd.
Za optimizaciju sistema pravi izbor je kompajliranje kernela, pri emi se vri izbor samo onih komponenti koje su
potrebne za rad sistema. Time se dobija olakano jezgro, koje je bre i bezbednije od glomaznog stock jezgra. Za
kompajliranje jezgra potrebno je instalirati potrebne alate za kompilaciju (gcc, make), preuzeti izvorni kod jezgra,
pokrenuti alate za kompaliranje (npr. menuconfig), konfigurisati potrebne parametre, isvriti procesprevoenja i podesiti
da se pri podizanju sistema moe odabrati novi kernel. Preporuka je da se stari kernel zadri dok se novi dovoljno ne
istestira.
Utoku konfiguracije jezgra, pred prevoenje i instalaciju, pojedini delovi jezgra se mogu podesiti kao modularni ili kao
ukljueni u monolitno jezgro. Mogue je i potpuno iskljuiti opciju modularnosti.

Kompajliranje programa pod Linuksom


Podrazumevani skup alata za kompajliranje pod Linuksom naziva se gcc - gnu compiler collection i podrava razliite
jezike, pre svega C i C++. Najvei deo jezgra Linuksa napisan je u jeziku C. Linuksova standarda C biblioteka je glibc i u njoj
se nalaze npr. funkcije za izdavanje sadraja na ekran (deklarisane u zaglavlju stdio.h), za rad sa stringovima (zaglavlje
string.h) itd.
Najjednostavniji nain kompajliranja je navoenje fajla sa izvornim kodom. Npr.
gcc program.c -o program.o
Sviem -o definie se izlazni, binarni fajl.
Za Linuks su na raspolaganju i brojni vizuelni alati za programiranje: Anjuta, Code:Blocks, multiplatformski NetBeans itd.
Ukoliko postoji vie fajlova sa kodom, koje treba iskompajlirati i povezati (linkovati), te operacije se definiu u posebnom
fajlu (makefile) i izvravaju komandom make.
3

Materijal za III kolokvijuma

Periferije - Linuks
Kod Linuksa svaki ureaj predstavljen je u vidu datoteke u okviru direktorijuma /dev. Ovo je tradicija sistema UNIX,
odnosno Plan9, koju prati i Linuks. Na primer, particija hard-diska se predstavlja u vidu datoteke, koja se zatim montira u
sistem datoteka i dalje koristi. Sa druge strane, nije dovoljno da postoji datoteka: prethodno je neophodno da ureaj
bude prepoznat, instaliran i pokrenut.
Da bismo pregledali ureaje koji su prikljueni preko PCI magistrale, koristimo komandu lspci:

Za ureaje prikljuene preko USB-a, odnosno same prikljuke, koristimo lsusb.


Operativni sistem komunicira sa hardverom putem drajvera, programa koji na neki nain predstavljaju apstrakciju
ureaja, odnosno koji, za raun operativnog sistema, vre potrebne operacije hardvera. Na primer, drajver grafike
kartice upravlja karticom, dajui prikaz odgovarajue slike na monitoru. Korisnik nema direktan pristup drajveru, ve
koristi ureaj, koji je predstavljen kao datoteka u /dev.
Drajveri su kod modularnog Linuksa definisani kao moduli, komponente koje omoguavaju rad datih ureaja. Odreeni
broj modula nalazi se uitan u samom jezgru (kernelu) Linuksa, dok je neke potrebno naknadno uitati u jezgro. Za
ureaje koji ne poseduju odgovarajui modul, potrebno je instalirati drajver. Znai, da bi odreeni ureaj funkcionisao,
potrebno je instalirati odgovarajui drajver (ime se dobija modul), uitati modul i kreirati datoteku-ureaj u okviru
direktorijuma /dev.
Lista uitanih modula dobija se komandom lsmod.

Ovde se vidi da je modul fat korien od strane modula vfat (za rad sa Windowsovim fat particijama).
Detalji pojedinih modula dobijaju se sa /sbin/modinfo. Na primer:

Materijal za III kolokvijuma

Uobiajena lokacija modula je /lib/modules i direktorijum sa nazivom jezgra (2.6.13 - u primeru sa slike), a ekstenzija
ko, skraeno od kernel object.
Ukoliko je modul instaliran, uitava se sa modprobe, a uklanja sa modprobe -r (uz naziv modula).
Linuks identifikuje dve vrste ureaja: blok ureaje i karakter ureaje i predstavlja ih odgovarajuim specijalnim
datotekama (prve su u listingu oznaene sa b, a druge sa c). U blok-ureaje spadaju pre svega hard-diskovi, dok su
karakter ureaji terminali, modemi itd: ureaji kod kojih se podaci alju serijski, bit po bit.
Dva ureaja mogu koristiti isti drajver. Na primer, dve particije, formatirane sa ext3 sistemom datoteka, mogu da koriste
isti drajver za rad sa ext3. Drajver je definisan tzv. major (mejdor) brojem, koji je fiksan za dati tip ureaja i odreen u
samom Linuksu. Konkretan ureaj je definisan tzv. minor brojem, tako da se dva ureaja koji koriste isti drajver mogu
razlikovati. Ukoliko je ureaj instaliran, to znai prikljuen je i drajver instaliran, potrebno je kreirati odgovarajuu
datoteku u direktorijumu /dev.
Ureaj se kreira sa mknod, uz navoenje vrste ureaja, major i minor broja. Na primer,
mknod /dev/lp 3 2
Obino nije neophodno da korisnik eksplicitno kreira ureaj-datoteku, ve to vri proces udev, odnosno njegov servis
(daemon) udevd automatski.
Ureaj se moe koristiti direktno preko datoteke iz /dev. Na primer, datoteka se moe poslati na tampanje upisivanjem
u ureaj lp: cat fajl > /dev/lp
Ipak, preferira se korienje preko pomonih programa npr. iz procesora teksta.
Sa druge strane, upisivanje na hard-disk ne treba nipoto pokuavati direktno, preko /dev/hda1, na primer. To je stoga
to se rad sa hard-diskom ne vri direktno kroz drajver ureaja, ve preko sistema datoteka, koji predstavlja dodatni sloj
iznad ureaja i modula.
Drajver FS-a

Drajver HD
Hard-disk
U okviru direktorijuma /dev nalaze se i datoteke koje ne predstavljaju ureaje. Na primer, /dev/null je specijalna
datoteka, koja predstavlja crnu rupu: kada se neki izlaz poalje u ovu datoteku, praktino nestaje. Ostale specijalne
datoteke su random, zero, loop0 itd.
5

Materijal za III kolokvijuma

Jezgro (kernel) operativnog sistema belei svoje odzive u tzv. ring buffer. Ovaj dnevnik jezgra moe se pregledati
komandom dmesg. S obzirom na dugaak izlaz ove komande, preporuljivo je koristiti grep za traenje odreenog dela
odziva.
student@itlab:~> dmesg | grep usb
usbcore: registered new driver usbfs
usbcore: registered new driver hub

PERIFERIJE - WINDOWS
Drajveri se pod Windowsom dobijaju u okviru samog sistema ili se instaliraju naknadno. Problematini drajveri su jedan
od vrlo estih uzroka famoznih BSoD (Blue Screen of Death): poto je jezgro monolitno, problem sa drajverom lako
uzurpira kompletan sistem. U 64-botnim verzijama novijih Windowsa (Vista, 7) nije mogue instalirati drajvere koji nisu
odobreni (digitalno potpisani) od strane samog Majkrosofra. Drajverima se moe upravljati iz Device Managera.

Upravljanje memorijom - Linuks


Proces zauzima odreene resurse raunara, a jedan od osnovnih je memorija. Da bismo izvrili pregled raspoloive
memorije, moemo koristiti komandu free. (Uz svi m dobijamo veliine izraene u megabajtima.)

Materijal za III kolokvijuma

Linuks je karakteristian po tome to maksimalno iskoriava slobodnu memoriju za keiranje podataka. im program
zatrai jo memorije, oslobaa se keirani deo i dodeljuje mu se. U gornjem izlazu, slobodno je 3562MB memorije, a ne
186, jer je idreen deo zauzet podacima koji se keiraju i taj ke sistem moe lako da oslobodi i faktiki je to slobodna
memorija.
Da bi se omoguilo da process adresira i koristi vie memorije nego to ima na raspolaganju u RAM-u, koriste se tehnike
virtuelizacije memorije. Jedan od oblika virtuelizacije je stranienje (paging).
Kada se izvrava neka instrukcija kod sistema bez virtuelizacije memorije, za svaki podatak koji se adresira, oekuje se da
postoji u RAM memoriji i adresa koja se koristi istovremeno je fizika adresa podatka u RAM-u.
Kod virtuelizacije, koristi se virtuelna adresa i podatak se ne mora nalaziti u RAM memoriji. Procesor vri adresiranje
transparentno - on ne mora da zna gde se podatak tano nalazi. U hardveru postoji podrka za korienje virtuelne
memorije: MMU (Memory Management Unit). Ova jedinica, koja se nalazi u severnom mostu matine ploe ili u samom
procesoru, prevodi virtuelnu adresu u fiziku adresu i locira podatak. Podatak se moe nalaziti u RAM-u ili na
dodatnom prostoru. Dodatni prostor je pod Linuksom organizovan u vidu swap particije ili swap-fajla. Najee se za
potrebe virtuelizacije memorije koristi particija, koja se kreira pri instalaciji i koristi u neformatiranom obliku. Praksa je
da veliina swap particije bude dvostuko vea od veliine RAM-a. Osim za potrebe virtuelizacije, swap particija se koristi i
za smetanje kompletnog sadraja RAM-a pri hibernaciji raunara.
Da bi se manipulisalo swap particijom koristi se se komanda swapon. Npr, za dobijanje informacija o swap particiji:

Pregled memorije moe se izvriti i komandom top, koja inae daje podatke o aktivnim procesima.

Upravljanje memorijom - Windows


Pod Windowsom ulogu dodatnog prostora za potrebe virtualzacije memorije vri fajl pagefile.sys. Ukoliko je aktivirana
hibernacija, RAM se uva u drugom fajlu - hiberfil.sys. Oba fajla su skriveni sistemski fajlovi i nalaze se u korenom
direktrorijumu sistemske particije.
Upravljanje virtuelnom memorijom vri se iz System Properties.

Materijal za III kolokvijuma

Mogue je i u potpunosti iskljuiti virtuelnu memoriju, ali to nije preporuljivo za sisteme sa malo RAM-a. Korisna opcija
je preputanje samom Windowsu da odredi veliinu pagefile.
Pregled potronje memorije moe se izvriti iz Task manager-a, Izborom dodatnih kolona za prikaz.

Administracija sistema - Linuks


Administracija sistema podrazumeva razliite aktivnosti kojima se obezbeuje kvalitetan rad operativnog sistema i
prateih servisa. Administracija obuhvata faktiki upravljanje svim aspektima sistema - od fajl-sistema do procesa.
8

Materijal za III kolokvijuma

Postoje odreene aktivnosti koje su tipine za administraciju sistema i one e u nastavku biti predstavljene u kontekstu
sistem Linuks.
Prva stavka administracije je upravo instalacija sistema i potrebnog softvera. Jedan od velikih aduta Linuksa je to su
distribucije uglavnom opremljene sa izuzetno velikom kolekcijom softvera. Npr, na DVDu OpenSuSEa nalaze se stotine
programa, za praktino sve namene: od razvja softvera do zabave.
Ve je na poetku prie o Linuksu pomenuto da postoje distribucije zasnovane na rpm-u i na deb-u. OpenSuSe zasnovan
je na rpm paketima, koji su izvorno Red Hatova tekovina. Rpm predstavlja moan sistem za upravljanje paketima, koji
omoguava instaliranje i deinstaliranje paketa, auriranje, uz praenje meuzavisnosti paketa, njihove ispravnosti,
detalja vezanih za sadraj itd.
Postoje i drugi oblici paketa, specifini za pojedine distribucije.
Sa druge strane, programi se mogu instalirati i iz izvornog koda. Prvo je potrebno nabaviti izvorni kod za datu verziju
kernela, a onda izvriti kompilaciju, najee koristei gcc. Instalacija iz izvornog koda je fleksibilna, ali i komplikovanija.
Najosnovnija sintaksa koja se moe koristiti za instaliranje paketa je: rpm i paket.rpm. Za deinstaliranje se koristi rpm e
paket.rpm. Postoje i posebni programi koji omoguavaju napredno upravljanje paketima, praenje meuzavisnosti i sl.
Primeri su yum (CentOS, Fedora), zypper (OpenSuSE), apt-get (Debian, Ubuntu).
Paketi su dobijeni kompilacijom programa i njihovom pripremom za instalaciju. Linuks pati od ABI inkompatibilnosti, koja
za posledicu ima inkompatibilnost starijih paketa sa novijim verzijama softvera. Na primer, deb paket namenjen
Ubuntuu 6.06, vrlo verovatno nee raditi na Ubuntuu 10.04.
Za instalaciju paketa moe se koristiti i grafiko okruenje, u okviru YaST-a. Pri tome je vano definisati repozitorijume
skladita paketa. Repozitorijum moe biti CD, ali i direktorijum na udaljenom raunaru, u lokalnoj mrei ili na
Internetu. Na slici je dat prikaz postavki jednog repozitorijuma (pod CentOSom - levo i pod OpenSuseom - desno).

Materijal za III kolokvijuma

Po definisanju repozitorijuma, iz Software Managementa se vri pregled instaliranih programa, kao i zadavanje
instalacije novih u jednostavnom grafikom ambijentu.

Preporuka je da se, naroito kod servera, instaliraju samo programi koji su zaista neophodni, jer svaki dodatni softver
predstavlja potencijalnu sigurnosnu slabu taku i optereenje za sistem.
Zatita sistema je takoe jedan od imperativa u administraciji. Potrebno je zatititi sistem od samog poetka - kontrolom
podizanja sistema (iskljuivanje podizanja sa spoljne memorije, lozinka na BIOS-u), lozinka na boot-loaderu, rigorozna
politika lozinki korisnika.
10

Materijal za III kolokvijuma

Podeavanja lozinke se mogu izvriti takoe u YaST-u (kod OpenSusea), ali i ureivanjem odgovarajuih konfiguracionih
fajlova.

Ukoliko je potrebno regularnim korisnicima omoguiti vea prava, tako da mogu da izvre pojedine zadate programe,
bez odavanja lozinke superkorisnika, na raspolaganju je tzv. sudo. Ureivanjem jednog specijalnog fajla (/etc/sudoers)
zadaje se tano koji korisnik moe izvriti dati program sa datim pravima. Nakon toga korisnik unosi sudo komanda i
zatim daje svoju lozinku. Na ovaj nain se ukida potreba za otkrivanjem root lozinke.
Npr, ako je potrebno omoguiti korisniku student da ukljui mrenu karticu (to inae ne moe), potrebno je zadati
mogunost izvoenja komande ifconfig eth0 up (znai, ifconfig, uz parametre eth0 up), sa pravima root-a, bez zahteva za
lozinkom.

Posle ovakvih postavki, fajl /etc/sudoers dobija sledeu liniju:

Korisnik student e moi bez lozinke, sa pravima roota da izvri komandu, sa

Kod mnogih ditribucija unapred je podeeno da se sudo koristi za sve operacije, tako da se eliminie potreba za
prelaskom u reim roota (npr. kod Ubuntua).

11

Materijal za III kolokvijuma

Linuks u samom jezgru sadri fajervol, kojim se upravlja preko komandi (preko programa iptables), odnosno preko
posebnih alata. Postoje i grafiki interfejsi za kontrolu fajervola.
Postoje tri tzv. lanca u filter-tabeli Linuks-fajervola: INPUT, OUTPUT i FORWARD. U INPUT lancu se kontrolie saobraaj
koji je namenjen upravo raunaru na kojem je fajervol. OUTPIT lanac preuzima podatke koje raunar sa fajervolom alje
u mreu, a FORWARD podatke koji prolaze kroz raunar sa fajervolom. U poslednjoj opciji ovakav raunar igra ulogu
rutera.
Za Linuks su dostupni i antivirusni programi, ali za samu platformu postoji veoma mali broj virusa, pa nije potrebno
instalirati ih. Izuzetno, ukoliko se ele proveriti uvani fajlovi na postojanje virusa koji rade u Windows okruenju (a
korisnici ih mogu preuzeti), onda je korisno podesiti skeniranje datih direktorijuma.
Praenje aktivnosti je veoma znaajan zadatak sistem-administratora. Standardan Linuksov servis za beleenje dogaaja
je syslog, a zapisi se belee u fajlove u okviru direktorijuma /var/log. Jedan od najznaajnijih dnevnika je
/var/log/messages. Naravno, ovaj fajl se ne pregleda u celosti, nego se pretrauje (npr. sa grep), odnosno analizira
pomou namenskih alata. Mogue je, radi efukasnijeg praenja, zadati da se odreene aktivnosti belee u druge,
posebne fajlove.
esto je potrebno proveriti promene koje se izvravaju u neposrednoj prolosti ili u realnom vremenu. Za pregled
poslednjih linija fajla, koristi se tail. Za pregled promena u realnom vremenu, koristi se tail f. Na primer, ukoliko imamo
odreene bezbednosne incidente, za koje mislimo da ostavljaju trag u dnevniku /var/log/secure, unosimo:
tail f /var/log/secure i svaki dodatni red u fajlu e se oitati.

Webmin je jedan od veoma popularnih alata za administraciju. Objedinjava veliki broj administrativnih zadataka
(upravljanje korisnicima, procesima, praenje dnevnika) i realizovan je u vidu veb-aplikacije. U podrazumevanom
reimu webmin-server slua na portu 10000. Preko webmina se moe upravljati svim uobiajenim aspektima Linuksa, a
dostupna je podrka za razliite servise u vidu mnogobrojnih modula.

12

Materijal za III kolokvijuma

Arhiviranje
Znaajan aspekt administracije je kreiranje kopija sistema, odnosno pojedinih podataka. Za ovu svrhu se standardno
koristi program tar, a na raspolaganju su i drugi programi, kao to je npr. rsync.
Tar u osnovnoj varijanti ne komprimuje arhivu, ve samo zadate podatke uva u jednom fajlu, zadravajui njihovu
strukturu.
Da bismo kreirali arhivu /var/bekap1.tar sa svim fajlovima iz /home/student/Desktop, unosimo:
tar cf /var/bekap1.tar /home/student/Desktop
Dodaci su: c (create) i f (file).
Za raspakivanje arhive u tekui direktorijum, koristi se
tar xf /temp/bekap1.tar
Za kreiranje arhive koja je komprimovana (programom gzip), samo se dodaje z uz komandu:
tar czf /temp/bekap.tar.gz /home/student/Desktop
Raspakivanje ove arhive vri se slino:
tar xzf /temp/bekap.tar.gz
Za raspakivanje u zadati direktorijum, koristi se dodatak C:
13

Materijal za III kolokvijuma

tar

xzf arhiva.tar.gz -C /home/student

Praksa je da se arhivama dodaju ekstenzije tar i tar.gz (ako je arhiva komprimovana).


Programom tar je mogue kreirati rezervne kopije tako da se one svakom narednom prilikom samo dograuju. Prvo se
kreira Normal bekap (Full bekap), kopija kod koje svi podaci koji su iskopirani, dobijaju oznaku da su bekapovani, pa se
kasnije bekapuju samo u meuvremenu izmenjeni fajlovi i time se proces odvija bre.
Inkrementalni i diferencijalni bekap
Kod inkrementalnog bekapa, kreiraju se kopije samo onih fajlova koji su izmenjeni od poslednjeg Normal bekapa ili od
poslednjeg inkrementalnog bekapa (ako je postojao). Bekap je brz, ali je povratak podataka sporiji nego kod
diferencijalnog bekapa (vraa se vie delova, inkremenata).
Kod diferencijalnog bekapa, uvek se kreiraju kopije fajlova izmenjenih u odnosu na prethodni Normal bekap. Bekap je
neto sporiji, ali je povratak podataka bri.
Veoma efikasan alat za kreiranje sinhronizovanih kopija podataka je rsync, koji se obino koristi u reimu inkrementalnog
bekapa. Pri prvom kreiranju, kopiraju se svi fajlovi, a pri narednim pozivima se kopiraju samo oni koji su izmenjeni u
meuvremenu. Alat rsync moe da kopira fajlove in a udaljene raunare, preko ssh-a na primer.

rsync -zvr /var/opt/installation/inventory/ /root/temp

Ovde se vri sinhronizacija direktorijuma inventory sa direktorijumom temp: prvi je izvor, a drugi odredite kopiranja.

Administracija sistema - Windows


Administracija je tema itavih edicija naslova, a ovde e biti skrenuta panja na pojedine aspekte, analogno prethodnim
stavkama kod Linuksa.
Praenje aktivnosti pod Windowsom se moe vriti programom Event Log, dostupnim u okviru Administrative Tools u
Control Panelu.

14

Materijal za III kolokvijuma

Dogaaji se klasifikuju u tri osnovne vrste: Application, Security i System


Za potrebe kreiranja rezervnih kopija na raspolaganju je Windows Backup. Podrava klasine kopije, ali i Normal,
Incremental i Differential bekap.

Skriptovi pod Linuksom


Skript predstavlja program koji se pri svakom pokretanju interpretira red-po-red. Ovaj zadatak vri odgovarajui
interpreter. Kod bash skriptova je to bash interpreter. Kod kompajlerskih jezika (c, c++, paskal) vri se prevoenje itavog
programa samo jednom, dok se skriptovi interpretiraju pri svakom pokretanju.
Kreiranje skripta je u sutini jednostavno, mada kombinovanjem razliitih funkcija i regularnih izraza, kao i povezivanjem
vie skriptova meusobno konkretan sluaj moe biti prilino kompleksan.

15

Materijal za III kolokvijuma

Podseanje: Standardni izlaz (oznaava se sa 1) je ekran, ali se moe vriti preusmeravanje u fajl, npr. ls -al /root >
~/spisak. Preusmeravanje izlaza komande u ulaz druge komande vri se pajpom (|). Npr. cat /etc/fstab | grep sda.
Standardni izlaz za greke je takoe ekran, a oznaava se sa 2. Da bismo preusmerili greke u eljeni fajl, moemo pisati
exec 2> /root/log (izmeu dvojke i znaka vee nema razmaka).
Da bismo napravili skript, potrebno je da otvorimo tekstualni editor (grafiki ili editor nano, vi) i na sam poetak
datoteke unesemo #! /bin/bash. Taraba (#) sama oznaava poetak komentara. Kombinacija #! naziva se a-beng (Shabang) i predstavlja magine brojeve, koji definiu da je re o skriptu1. Putanja /bin/bash je putanja programa (shella)
koji se koristi za interpretaciju skripta. Bash je najpopularniji shell. Ostali shellovi su korn, csh...
Dalje je potrebno uneti niz komandi kojima se izvrava neki zadatak. Na primer, ukoliko hoemo da skript u datoteci
webstrane uva spisak svih datoteka sa nastavkom html, imamo
#! /bin/bash
# Samom tarabom se odvajaju komentari
ls -l /home/*.html > webstrane
Kada se ovakav skript snimi, izvrava se iz datog direktorijuma sa ./skript. Naravno, potrebno je da skript bude izvran.
Obiaj je da skriptovi nose nastavak sh, npr: savelog.sh (mada nije obavezno).
U okviru skripta moe se regularno koristiti promenljiva shella, ali se mogu kreirati i posebne promenljive. Za razliku od
mnogih programskih jezika, promenljive nije neophodno deklarisati, ve se mogu odmah koristiti, uz podrazumevani tip
string. Kada dodeljujemo vrednost promenljivoj, ne stavljamo znak dolara ($), a kada je pozivamo, stavljamo. Npr.
FAJL=/var/log/loger, echo $FAJL
Za izdavanje na ekran koristi se komanda echo.
Za uzimanje podataka od korisnika koristi se read.
Za uslov se koristi uslovna struktura if-then-else-fi
Ukoliko hoemo da izdajemo doslovni sadraj, koristimo jednostruke navodnike, npr: echo 'Unesite naziv fajla'. Ako
hoemo da unutar navodnika koristimo i neku promenljivu, sa jednostrukim to ne bi uspelo, ve moramo koristiti
dvostruke navodnike:

Ukoliko hoemo da unutar navodnika smestimo komandu, potrebno je uneti je izmeu obrnutih jednostrukih navodnika
(backticks) ili u zagradi, sa znakom dolara ispred.

Nakon ovoga, komanda file daje informaciju da je re o skriptu, a ne o obinoj datoteci.

16

Materijal za III kolokvijuma

Za konkretnu komandu date, zgodnije je koristiti drugaiji format, npr:

Primer 1. Potrebno je kreirati skript koji proverava da li se uneta datoteka nalazi u korisnikom direktorijumu i, ako se
nalazi, njene detalje upisuje u datoteku filedetails, a u suprotnom izdaje poruku.
#!/bin/bash
#Primer za uslovnu strukturu
echo Unesite naziv datoteke
read FILE
if [ -e $HOME/$FILE ]
then
ls al $HOME/$FILE > $HOME/filedetails
else
echo Datoteka nije pronadjena
fi
exit 0
Objanjenje: $HOME je promenljiva okruenja i predstavlja korisniki direktorijum. Struktura if sadri then, else ili elseif,
a zavrava se sa fi.
Uslov se proverava postavljanjem u uglaste zagrade, pri emu je obavezan razmak posle otvaranja i pre zatvaranja
zagrade. Korieni uslov proverava postojanje datoteke na sistemu. Za proveravanje postojanja datoteke (pri emu se
utvruje da li je re o direktorijumu) koristi se d, za proveravanje postavljenosti izvrnog bita koristi se x itd. Naravno,
uslovi ne moraju biti vezani za informacije o datotekama, ve mogu ispitivati i (ne)jednakost vrednosti promenljivih itd.
Da bi skript mogao da se izvri prostim unosom imena, treba mu dodeliti pravo izvravanja (x). Bez izvrnog bita, mora se
navesti interpreter i fajl: /bin/bash skript.sh
Osim provere da li fajl postoji [ -e fajl ], na raspolaganju su i druge provere:
-f file

da li datoteka postoji, da li je obina a ne direktorijum

-d dir

da li direktorijum postoji, i da li nije obina datoteka

-w file da li je datoteka sa pravom upisa


-r file

da li je datoteka bez prava upisa (read-only)

-x file

da li je datoteka izvrna

Uz negaciju (!) uslov se negira, npr. if [ ! -e fajl ] znai: ukoliko fajl ne postoji.

17

Materijal za III kolokvijuma

Primer 2 Napisati skript koji e izvriti kreiranje sigurnosne kopije foldera /home/student. Arhiva treba da bude
komprimovana. Arhiva se kreira u folderu /bekap, a postojee arhive se prethodno briu. Ukoliko odgovarajui folder ne
postoji, kreira se. Ime arhive treba da sadri datum (date +%d%m%y).
Informacija o bekapu se unosi u fajl /var/log/bekap.log pod imenom koje sadri takoe datum.
Skript treba da se izvri svakog ponedeljka u 3:30 ujutru.
#!/bin/bash
LOGFILE=/var/log/bekap.log
DIR=/home/notroot
BDIR=/bekap
exec 2>LOGFILE
if [ -d $BDIR ]
rm -r BDIR/*
else
mkdir $BDIR
fi
tar cvzf "$BDIR/`date +%d%m%y`" $DIR/*
exit 0
(Skript se moe izmestiti u poseban direktorijum, da ne bi bekapovao samog sebe. Npr. u /root)
Nakon provere ispravnosti skripta, u crontab se unosi:
30 3 * * 1 /root/bekap.sh

18

You might also like