You are on page 1of 18

Table of Contents

JEZGRO......................................................................................................................................................................... 2 Periferije - Linuks .......................................................................................................................................................... 4 PERIFERIJE - WINDOWS ................................................................................................................................................ 6 Upravljanje memorijom - Linuks ................................................................................................................................... 6 Upravljanje memorijom - Windows .............................................................................................................................. 7 Administracija sistema - Linuks ..................................................................................................................................... 9 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, a ekstenzija ko. 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. 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. 7

Materijal za III kolokvijuma

Upravljanje virtuelnom memorijom vri se iz System Properties.

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.

Materijal za III kolokvijuma

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. 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.

11

Materijal za III kolokvijuma

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). 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 12

Materijal za III kolokvijuma

/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. 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.

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 13

Materijal za III kolokvijuma

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: 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 vi) i na sam poetak datoteke unesemo #! /bin/bash. Taraba (#) sama oznaava poetak komentara. Kombinacija #! naziva se a-beng (Sha-bang) 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):

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


1

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

16

Materijal za III kolokvijuma

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 (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 -d dir da li datoteka postoji, da li je obina a ne direktorijum da li direktorijum postoji, i da li nije obina datoteka

-w file da li je datoteka sa pravom upisa -r file -x file da li je datoteka bez prava upisa (read-only) 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/notroot. 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