Unix Srpski

Embed Size (px)

Citation preview

Univerzitet u Nisu

Elektronski fakultet

Vodic za pocetnike i malo viseautor:

Srdjan MilenkovicU Nisu, mart 1996. godine

Sadrzaj

Uvod Istorija razvoja UNIX sistema UNIX i drugi operatini sistemi Zasto bas UNIX? Arhitektura UNIX operativnog sistema o Kernel o Fajl sistem Obicni fajlovi Tipovi obicnih fajlova Zastita fajlova Tipovi korisnika fajlova Imena fajlova Direktorijumi Zastita direktorijuma Struktura direktorijuma HOME direktorijum Pristupni put Specijalni fajlovi Links Pipe Socket o Procesi o Shell Osnovne komande UNIX operativnog sistema o Login procedura o Komande opste namene passwd, cal, clear, date, man, find, grep. o Rad sa direktorijumima cd, ls, ll, mkdir, rmdir, pwd. o Rad sa fajlovima cat, chmod, umask, chown, chgrp, cmp, diff, cp, more, mv, rm, ln, compress, split, uuencode i uudecode. o Radna okolina i odgovarajuce komande uname, whoami, who, w, du, env. o Arhiviranje (tar) o Komande za stampanje lp, cancel, lpstat. o Kontrola procesa shutdown, su, kill, ps. o Komuniciranje sa drugim korisnicima mail, write, talk.

Editor teksta VI Modovi rada editora Poziv editora Izlaz iz editora Poziv drugih fajlova Pomeranje kurzora Pomeranje kroz prozor Brojevi linija i pretrazivanje UNDO i REPEAT Brisanje teksta Izmene teksta Unos teksta Rad sa baferima Rastavljanje i sastavljanje linija Multipliciranje komandi Promenljive VI-a Komande za zapisivanje Prilagodjenje VI-a svojim potrebama Shell i programiranje shell-a o Uvod Poredjenje osobina shell-ova o C Shell kao komandni interpreter Opsta sintaksa komandi Univerzalni znaci Redirekcija Nastavljanje i razdvajanje komandi Spesijalni znaci i navodnice Kontrola poslova History mehanizam o C Shell kao skript interpreter Proces kreiranja i izvrsavanja C shell skripta Argumenti komandne linije Promenljive Aritmeticke operacije Logicke operacije Logicki operatori Kontrolne strukture if, switch, foreach, while, goto. Komentari i izlaz o Najvaznije ugradjene komande o Najznacajnije predefinisane promenljive o Start-up fajlovi C shell-a Racunarske mreze i mrezni servisi o Prednosti umrezavanja Virtualne terminalske sesije Transfer fajlova Razmena elektronske poste Deljenje resursa Diskless radne stanice Distribuirane baze podatakao

Distribuirana obrada podataka Graficke mrezne aplikacije o Standardizacija mreznih komunikacija o Mrezni hardver LAN Bridge, repeater, router i gateway WAN Access serveri o Adrese i imena hostova u mrezi o Koriscenje mreznih servisa telnet, rlogin, ftp, finger, ping. Elektronska posta, E-mail adrese mail, elm. Slanje i prijem binarnih podataka Slanje i prijem velikih dokumenata NFS o Sigurnost podataka u mreznom okruzenju Sigurnost korisnickog racuna Sigurnost sistema Sigurnost mreze Literatura

UvodUNIX je vrlo popularan operativni sistem. Koristi se kako u laboratorijama i na univerzitetima tako i u industrijskoj okolini. Raspolozive su verzije ovog sistema za upotrebu na racunarima opste namene, na specijalizovanim racunarima, na personalnim racunarima, na grafickim radnim stanicama, na malim i velikim sistemima razlicitih proizvodjaca. Glavne odlike ovog operativnog sistema su sledece:

Sistem je pisan na jeziku visokog nivoa (C jezik), sto ga cini lakim za razumevanje, izmenu i prenosenje sa jedne na drugu masinu. Ima relativno jednostavan korisnicki interfejs. Ima primitive koje omogucavaju da se slozeni procesi grade od prostih. Koristi hijerarhijski fajl sistem sto omogucava lako odrzavanje i efikasnu implementaciju. Koristi konzistentan format za fajlove, posmatra ih kao niz bajtova sto olaksava pisanje aplikacionih programa. Ima prost i konzistentan interfejs ka perifernim jedinicama. To je visekorisnicki (multi user), viseprocesni (multi process) sistem. Svaki korisnik moze simultano da izvrsava vise procesa. Podrzava mnoge programske jezike kao sto su Fortran, Basic, Pascal, Ada, Cobol, Lisp, Prolog, a naravno i C programski jezik. Takodje, raspolozivi su savremeni, objektno orijentisani jezici C++, Objective C, kao i razni CASE alati. Razvojem X Windows okruzenja, UNIX konacno dobija graficki korisnicki interfejs.

Istorija razvoja UNIX sistemaPrvu verziju UNIX sistema je razvio Ken Thompson iz istrazivacke grupe Bell-ove laboratorije 1969. godine za upotrebu na racunaru PDP-7. Uskoro je ova grupa prosirena. Ken Thompson i Dennis Ritchie sa jos nekolicinom kolega su nastavili razvoj ovog operativnog sistema. Dennis Ritchie je pre toga radio na operativnom sistemu Multix koji je imao jak uticaj na oblikovanje UNIX-a. Iz Multix-a su pozajmljene mnoge ideje, kao sto su: osnovna organizacija fajl sistema, ideja da se komandni interpretator (shell) tretira kao korisnicki proces, koriscenje posebnih procesa za svaku komandu, originalni znaci za editiovanje linije (# za brisanje poslednjeg znaka i @ za brisanje citave linije). Veliki uticaj na razvoj UNIX-a takodje su imali operativni sistem CTSS razvijen na MIT-u i XDS-940. Ritchie i Thompson su prebacili UNIX na PDP-11/20 i to je bila druga njegova verzija. U trecoj verziji su isti autori napisali najveci deo ovog operativnog sistema na programskom jeziku C, koji je razvijen u Bell-ovim laboratorijama kao podrska UNIX-u. Zatim je UNIX prebacen na vece modele PDP racunara, kao sto su 11/45 i 11/70. U UNIX je ukljuceno multiprogramiranje kada je UNIX pisan na C-u i kada je prebacen na sisteme ciji je hardver podrzavao multiprogramiranje. Ubrzo je poceo da se masovno koristi u Bell-ovim

laboratorijama i na nekim univerzitetima. Prva verzija koja je masovno koriscena bila je Verzija 6 iz 1976 godine. Verzija 7 je distribuirana 1978. godine za sisteme PDP-11/70 i Interdata 8/32. Ubrzo je UNIX prenet sa PDP-11 kao i na VAX liniju racunara. Verzija UNIX-a pripremljena za VAX nazvana je 32V. Nakon Verzije 7 formirana je posebna grupa, UNIX Support Group (USG), u okviru AT&T u cijem su sastavu Bell-ove laboratorije, ciji je zadatak bio da se brine o UNIX sistemu. Tako UNIX prestaje da bude samo istrzivacki alat i postaje komercijalni proizvod. Nastavlja se sa njegovim razvojem a 1985. godine je lansirana Verzija 8. USG je 1982 lansirao System III koji je predstavijao sintezu verzija 7 i 32V, i jos nekih internih verzija iz Bell-ovih laboratorija (UNIX/RT i vise PWB-a). Sledece 1983 godine lansiran je System V koji se u nesto izmenjenom izdanju pojavio 1984 godine kao UNIX System Development Laboratory (USDL) ili UNIX System V Release 2 (V.2). Mnoge organizacije se ukljucuju u razvoj i dogradnju UNIX sistema. Medju njima su Rand, BBN, DEC, SCO i Univerziteti Illinois, Harvard, Purdue. Medjutim, najveci uticaj, van Bellovih laboratorija i AT&T-a, imao je Kalifornijski Univerzitet u Berkley. Na ovom univerzitetu su zapoceli rad 1978 godine na VAX UNIX-u 32V kome su dodali virtuelnu memoriju, stranicenje na zahtev i zamenu stranica i tako je nastao 3BSD. Virtuelna memorija je omogucila da se UNIX koristi za razvoj velikih programa, kao sto je Berkley-ev Franz Lisp. Ubrzo je DARPA (Defence Advanced Research Projects Agency) narucila na Berkley-u standardni UNIX sistem za upotrebu u upravljanju. Tako je nastao 4BSD. Ova verzija UNIXa je obezbedila rad u mrezi po DARPA Internet mreznom protokolu (TCP/IP). U novoj verziji 4.2BSD je obezbedjena uniformna komunikacija medju razlicitim elementima, ukljucujuci lokalne mreze (kao sto je Ethernet i token rings) i mreze racunara (kao sto je DARPA-in Arpanet). Na Berkley su razvijeni mnogi drajveri za terminale, novi korisnicki interfejs (C shell), novi tekst editor (ex/vi), kompajler za Pascal, interpreter za Lisp, kao i mnogi drugi sistemski programi. Operativni sistem 4.2BSD se vec moze porediti sa VMS operativnim sistemom. UNIX softver iz Berkley-a se distribuira preko Berkley Software Distributions. Tu se mogu dobiti 3BSD i 4BSD za VAX UNIX sisteme, kao i 4.1BSD i 4.2BSD kao i mnoge nove verzije ovog sistema. Ovde nije kraj verzijama UNIX-a. DEC je razvio svoj UNIX (ULTRIX) za VAX-ove i DEC Station, Microsoft je razvio UNIX za Intel 8088 i nazvao ga XENIX, IBM ima UNIX za PC i za velike sisteme. UNIX takodje postoji za Amdhal, Sun, NB1, MassComp, Hewlett-Packard, Gould, Data General, Perkin-Elmer, kao i za mnoge druge sisteme. Ovi sistemi imaju najcesce kao bazu sledece verzije: Verzija 7, System III, 4.2BSD ili System V. UNIX se i dalje razvija i treba ocekivati njegovu sve masovniju primenu. Na slici 1 prikazan je razvoj i veza novijih verzija UNIX-a.

Slika 1: Veza raznih verzija UNIX-a Sto se naseg okruzenja tice, najcesce se srecu sledece verzije UNIX operativnog sistema:

SCO i Linux na racunarima tipa PC, 4.2BSD, 4.3BSD na Sun radnim stanicama starije generacije, SunOS, Solaris na SPARK Sun radnim stanicama, IRIX na Silicon Graphics grafickim radnim stanicama, HP-UX na Hewlett Packard radnim stanicama, ULTRIX na Digital-ovim DEC radnim stanicama i AIX na IBM-ovim radnim stanicama.

UNIX i drugi operativni sistemiKako bi avionski saobracaj izgledao kada bi softverske firme vodile avionske kompanije? (preneseno iz PC-Press, broj 5, 1995).

DOS Air: Molimo cenjene putnike da tokom poletanja poguraju avion, i da uskoce u njega kada se odvoji od piste... Windows Airlines: Beskrajna flota Lear Jet-ova, cist i uredan terminal, lepe stjuardese, strucni piloti... Avion poleti, popne se na 10000 metera i eksplodira bez razloga. OS/2 SkyWays: Gotovo prazan terminal, personal ljubazno, tihim glasom, objasnjava kako ce putovanje biti mnogo prijatnije i sigurnije nego u kompaniji Windows Airlines, pokazujuci povremeno divne avione koji su parkirani pored piste. Samo treba sacekati da tehnicari naprave motore.

Unix Express: Putnici obavezno donose sa sobom po jedan deo aviona i odgovarajuci alat. Onda se par sati svadjaju oko toga koji avion uopste zele da grade, dele se u grupe i sastavljaju nekoliko razlicitih aviona kojima daju ista imena. Na kraju samo poneko stigne na zeljeno odrediste, ali su svi odusevljeni sto su bilo gde stigli.

S obzirom da u svakoj sali ima mnogo istine, na osnovu ove se jasno mogu uociti prednosti i mane UNIX-a u poredjenju sa drugim operativnim sistemima. Prednosti su mnogobrojne i bice istaknute u narednim izlaganjima a mana je samo jedna. UNIX je, kako se da uociti iz prethodnog poglavlja, rasprostranjen u prilicnom broju verzija sto moze da izazove, bar u pocetku, zabunu kod korisnika.

Zasto bas UNIX?Sa grafika koji je prikazan na sledecoj slici se jasno vidi da UNIX polako ali sigurno ulazi u sve masovniju upotrebu i to u svetskim razmerama. Porast broja racunara koji koriste ovaj operativni sistem se krece i do 30% godisnje. Takodje je interesantno uociti da u UNIX svetu dominiraju radne stanice i da znacajno mesto zauzimaju i sistemi tipa PC. Upotreba superracunara nije prevelika zbog visoke cene dok je evidentno i to da se koncept main-frame racunara polako napusta.

Sistemi koji koriste UNIX (IEEE Spectrum, Januar 1994)

Mnogi proizvodjaci racunarske opreme koji poseduju sopstvene operativne sisteme, po kvalitetu bliske UNIX-u (Digital ili IBM, na primer) takodje isporucuju svoje racunare i pod UNIX-om. Ovo je verovatno zbog toga sto UNIX polako postaje standard medju operativnim sistemima. Uz neznatne razlike, on je isti na razlicitim platformama. Standardizacija mreznog dela UNIX-a omogucava umrezavanje racunara i komunikacione opreme razlicitih proizvodjaca sto racunare koji ga koriste svrstava u klasu otvorenih sistema (Open Systems).

Arhitektura UNIX operativnog sistemaNa slici 2 je prikazana arhitektura UNIX operativnog sistema. U centru strukture nalazi se hardver koji snabdeva operativni sistem svim potrebnim hardverskim resursima. Oko hardvera se nalazi niz slojeva koji izoluju korisnika od masine cineci mu na taj nacin rad na racunaru konformnijim. Prvi sloj oko hardvera je jezgro (kernel) operativnog sistema koje ima zadatak da vise slojeve izoluje od sloja ispod, to jest da ih ucini hardverski nezavisnim. Sledeci sloj cini komandni interpreter (shell). Prvenstveni zadatak ovog sloja jeste interakcija sa korisnokom (prihvatanje korisnickih zahteva, njihovo interpretiranje i predavanje nizem sloju (kernelu) na izvrsavanje). U najvisem sloju nalaze se razlicite komande i korisnicki programi ciji je zadatak direktno pruzanje specificnih usluga korisniku. Na slici 2, ovaj sloj je podeljen na vise delova. Svaki od delova predstavlja skup srodnih komandi. Imajuci ovo u vidu, moze se reci da razumevanje UNIX operativnog sistema zahteva poznavanje cetiri njegove osnovne komponente: kernel, shell, komande i fajl sistem koji nije eksplicitno prikazan na slici 2 ali je implicitno sadrzan u delu kernela.

Slika 2: Arhitektura UNIX-a

KernelKernel UNIX operativnog sistema kontrolise pristup racunaru, upravlja fajl sistemom, resursima racunara, diskovima, trakama, stampacima, komunikacionim linijama i drugim uredjajima. Na slici 3. dat je pregled funkcija Kernel-a.

Slika 3: Funkcije kernela

File sistemFile u UNIX operativnom sistemu predstavlja kolekciju znakova. Velicina fajla je jednaka ukupnom broju znakova koje fajl sadrzi. Podaci unutar fajla nemaju nikakvu strukturu osim one koju sam korisnik definise. Fajl sistem u UNIX operativnom sistemu je organizovan hijerarhijski, u obliku stabla, kako je to prikazano na slici 4. U osnovi stabla je direktorijum poznat kao root direktorijum. Grane stabla predstavljaju direktorijume dok fajlovi predstavljaju listove stabla fajl sistema.

Slika 4: Fajl sistem Postoje tri vrste UNIX fajlova:

obicni fajlovi, direktorijumi i fajlovi specijalnih jedinica.

Obicni fajloviObicni fajlovi predstavljaju skup 8-bitnih znakova. Obican fajl moze sadrzati izvorni program, izvrsni program, tekst nekog dokumeneta, slogove baze podataka, ili bilo koji drugi tip podataka. Bajtovi obicnog fajla se mogu interpretirati kao znakovi nekog teksta, binarne instrukcije, ili kao naredbe programa. Svaki obican fajl ima sledece atribute:

ime fajla, jedinstven broj fajla nazvan inode, velicinu u bajtovima, vreme kreiranja, vreme poslednje izmene, vreme poslednjeg pristupa, pristupne dozvole i vlasnika i grupu.

Tipovi obicnih fajlova Postoje dva tipa obicnih fajlova:

tekstualni i binarni fajlovi.

Tekstualni fajlovi sadrze samo vidljive ASCII znakove. Bajt binarnog fajla moze imati bilo koju vrednost (od 0 do 255).

Zastita fajlova Zastita fajlova se preduzima iz sledecih razloga:

Onemoguciti neovlascen pristup, koriscenje ili brisanje podataka smestenih u fajl. Onemoguciti slucajno ili nenamerno brisanje, promenu ili povredu sadrzaja fajla bilo koje vrste. Omoguciti da vise korisnika koriste podatke iz istog fajla ali da svaki od njih ima razlicita prava nad njim. Tipican slucaj je kada samo jedan korisnik moze da menja sadrzaj a vise njih mogu da citaju podatke iz fajla. Osigurati sadrzaj fajla u slucaju kvara ili ispada sistema.

Zastita fajlova u UNIX operativnom sistemu je zasnovana na kontrolisanom pristupu podacima koje on sadrzi. Prava koja jedan korisnik moze imati nad fajlom nazivamo pristupnim dozvolama (access permissions). Za svaki fajl u UNIX operativnom sistemu je moguce kontrolisati sledece tipove pristupnih dozvola: read write dozvoljeno citanje fajla dozvoljen upis u fajl

execute dozvoljeno izvrsavanje fajla

Tipovi korisnika fajlova UNIX operativni sistem razlikuje dve vrste korisnika. Jedan korisnik, poznat kao root ili super korisnik (super user) poseduje sva prava na sistemu. Njemu su dozvoljene sve akcije kao sto su, na primer, promena konfiguracionih fajlova, instalacija novog i brisanje vec instaliranog softvera, pa cak i promena kernela. Privilegije ovakvog korisnika se dodeljuju pouzdanoj i strucnoj osobi koja se naziva sistem administratorom. Svi ostali korisnici cine klasu obicnih korisnika i, naravno, imaju ogranicena prava. Svi korisnici UNIX sistema, racunajuci i super korisnika, su podeljeni u grupe. Kriterijum koji se koristi za podelu korisnika je obicno tip zadataka za koje su oni zaduzeni. Na primer, skup korisnika koji rade na jednom zajednickom projektu, cine grupu. Pri tome, jedan korisnik moze biti clan jedne ili vise grupa (ako radi na vecem broju projekata, na primer). Gledano sa strane fajla, svi korisnici sistema se dele u tri klase:

vlasnik (owner), clanovi grupe (group) i ostali (other).

Vlasnik fajla je korisnik koji je kreirao fajl i on poseduje pravo da odredjuje pristupne dozvole fajlu. Naravno, ovo pravo poseduje i super korisnik. Clanovi grupe jesu korisnici koji pripadaju grupi kojoj pripada i vlasnik fajla. Svi drugi korisnici se tretiraju kao ostali. Za svaku klasu korisnika fajla je moguce definisati zasebne pristupne dozvole. Na primer, uobicajeno je da vlasnik poseduje sva prava nad fajlom (citanje, upis i izvrsavanje, ako se radi o izvrsnom fajlu), clanovima grupe se dodeljuje pravo citanja (bez prava menjanja sadrzaja), dok ostali korisnici ne poseduju nikakvo pravo pristupa fajlu. Kontrola pristupa fajlu je relativno jednostavna i obavlja se sledecim komandama: chown, chgrp i chmod.

Imena fajlova Imena fajlova mogu biti duzine do 14 znakova, mada kod nekih verzija UNIX-a mogu biti i znatno duza. Dva fajla iz istog direktorijuma ne mogu imati isto ime. Medjutim, isti fajl moze imati vise imena sto se obezbedjuje soft ili hard linkovima (videti komandu ln). U imenu fajla se mogu naci svi ascii znaci, ali koriscenje nevidljivih nije preporucljivo iz prakticnih razloga. Svaki direktorijum ima fajlove sa imenima . i .. (sinonimi za tekuci i parent direktorijum), pa ova dva imena ne treba koristiti. U UNIX operativnom sistemu ne postoji nikakva konvencija koja povezuje imena fajlova sa tipom podataka koje oni sadrze, kao sto je to slucaj, na primer, u DOS operativnom sistemu (svi fajlovi koji imaju sufix .EXE su izvrsni). Medjutim, pojedini softverski paketi zahtevaju da fajlovi kojima oni barataju imaju odredjene sufikse, bez obzira sto to nije uslovljeno operativnim sistemom. Na primer, kompajleri C programskog jezika ocekuju da su fajlovi koji sadrze izvorne kodove sa ekstenzijom .c. Fajlovi cija imena pocinju tackom (.) se posebno tretiraju od strane UNIX-a. To su takozvani skriveni fajlovi a razlikuju se od ostalih po tome sto se njihova imena ne pojavljuju pri standardnom listanju sadrzaja direktorijuma (videti komandu ls).

DirektorijumiUNIX je posebno interesantan po tome sto su direktorijumi tretirani na isti nacin kao i obicni fajlovi s tim sto je u njih smestena lista fajlova lociranih na tom direktorijumu. I ovde, kao i u drugim operativnim sistemima, direktorijumi omogucavaju hijerarhijsku organizaciju celog fajl sistema.

Zastita direktorijuma Slicno kao kod obicnih fajlova, direktorijum ima tri tipa pristupnih dozvola: citanje (read), upis (write) i izvrsenje (execute) s tim sto se one ovde malo drugacije interpretiraju. Dozvola

upisa i izvrsenja odredjuje da li fajlovi mogu biti dodavani ili brisani sa direktorijuma. Dozvola izvrsenja i citanja odredjuje da li se sadrzaj direktorijuma moze listati. Takodje, gledano sa strane direktorijuma, postoje tri klase korisnika: vlasnik, clanovi grupe i ostali. Pristupne dozvole direktorijuma postavlja vlasnik, to jest korisnik koji je kreirao direktorijum.

Struktura direktorijuma Fajl sistem UNIX operativnog sistema je hijerarhijski struktuiran u vidu stabla. U tom stablu, direktorijumi odgovaraju cvorovima, dok su listovi stabla obicni fajlovi. Na slici 5. je prikazana tipicna struktura direktorijuma karakteristicna za UNIX operativni sistem. Na vrhu stabla je direktorijum koji se naziva korenom (root) i oznacava se kosom crtom (/). Ispod root direktorijuma prikazani su direktorijumi koji su standardno prisutni u svim realizacijama UNIX operativnog sistema. Mada UNIX ne postavlja nikakva ogranicenja u pogledu izgleda stabla fajl sistema, ipak postoji konvencija koja se u vecoj meri postuje. Po toj konvenciji fajl sistem skoro obavezno sadrzi direktorijume koji su prikazani na slici 5. Osim njih, kod razlicitih verzija UNIX-a pojavljuju se i neki specificni direktorijumi koji su karakteristicni samo za tu verziju. Osim ovoga, sadrzaj standardnih direktorijuma je takodje standardizovan tako da bin direktorijum sadrzi najcesce koriscene UNIX komande, dev sadrzi specijalne fajlove, etc sadrzi najcesce koriscene komande i fajlove vezane za administraciju i odrzavanje sistema, lib je direktorijum gde su smestene biblioteke funkcija za razvoj programa, tmp je direktorijum za cuvanje podataka privremenog karaktera, usr direktorijum sadrzi korisnicke direktorijume (kod nekih realizacija se oni nalaze ispod /usr/people ili /home direktorijuma). Direktorijum usr takodje sadrzi aplikativne programe, neke sistemske fajlove i direktorijume ali koji su prvenstveno vezani za pruzanje usluga korisnicima.

Slika 5. Korisnicki ili HOME direktorijum

Svaki korisnik ima svoj maticni (HOME) direktorijum gde smesta svoje programe i podatke. Ispod ovog direktorijuma, korisniku je dozvoljeno da kreira proizvoljan broj drugih poddirektorijuma i fajlova u njima.

Pristupni put Pristupni put, ili krace put, je sekvenca imena direktorijuma na cijem se kraju nalazi ime ciljnog direktorijuma ili fajla. Sva imena u putu su razdvojena kosom crtom. Ako put pocinje kosom crtom znaci da je formiran od korena, to jest od root direktorijuma, i tada se naziva potpunim ili apsolutnim putem. Put se takodje moze kreirati relativno u odnosu na radni (working), ili tekuci direktorijum i tada se on naziva relativnim. Ovo ime ne pocinje kosom crtom. Svi direktorijumi i fajlovi, osim root direktorijuma, imaju neposrednog prethodnika (parent direktorijum). UNIX operativni sistem nudi specijalne skracenice za parent i radni direktorijum: . .. Skraceno ime za radni direktorijum. Na primer, ./xxx je ime fajla xxx u tekucem direktorijumu. Skraceno ime za parent direktorijum radnog direktorijuma. Na primer, ../.. se odnosi na direktorijum koji je dva nivoa iznad radnog.

Specijalni fajloviZa svaki U/I uredjaj koji je prikljucen na racunar postoji bar jedan specijalni fajl. Najveci broj imena specijalnih fajlova su mnemonicka. Na primer, /dev/lp je specijalni fajl za linijski stampac, /dev/ttyd1 za prvi serijski port i slicno. Obracanje programa bilo kom uredjaju obavlja se preko odgovarajuceg specijalnog fajla. Kada, na primer, program upisuje podatke u fajl /dev/lp, operativni sistem prihvata ove podatke i salje ih linijskom stampacu. Kada program cita podatke iz ovog fajla, operativni sistem zahteva podatke od linijskog stampaca. Da bi ove operacije obavio, program ne mora nista znati o detaljima U/I mehanizma linijskog stampaca. Specijalni fajlovi su u stvari interfejs izmedju aplikativnih programa opste namene i internih rutina kernela UNIX operativnog sistema. Neki U/I uredjaji su znakovski orijentisani, to jest obradjuju znak po znak i iz tih razloga se kaze da su njihovi specijalni fajlovi tipa character. U ovu klasu uredjaja spadaju, na primer, terminali i stampaci. Drugi uredjaji obradjuju vece grupe podataka od jednom, na primer, blokove od 512 bajtova. Specijalni fajlovi ovakvih uredjaja su tipa block ili raw a u ovu klasu spadaju diskovi, magnetne trake, CD romovi, i slicno. Pored ovih postoje i neki tipovi specijalnih fajlova koji su karakteristicni iskljucivo za UNIX operativni sistem.

LinkoviLink je mehanizam kojim se omogucava da se vise imena dodeli jednom fajlu. Postoje dve vrste linkova: hard i simbolicki (soft) linkovi. Hard linkom se dva ili vise imena vezuju za

jedan isti fizicki fajl, odnosno za jedan isti inode. Simbolicki link obezbedjuje isto to ali predstavlja fajl koji sadrzi put do drugog fajla u sistemu. Pri dugom listanju simbolicki link se moze prepoznati na sledeci nacin:lrwxrwxrwx 1 tanja 5 mar 12 11:37 slink->indx

PipeJedna od glavnih inovacija UNIX sistema je koncept pipe-a. Pipe dozvoljava protok podataka u jednom pravcu izmedju dva procesa. Tacnije receno, pipe predstavlja jedan od mehanizama UNIX-a za interprocesnu komunikaciju. Najcesce je to nacin da se izlaz jedne komande koristi kao ulaz u drugu, tako da se one izvrsavaju kao sekvenca nazvana pipeline. U ovoj cekvenci, komande se odvajaju uspravnom crtom, na primer:% ls -l | more

Ovakav pipe se naziva neimenovanim i formira se u samoj memoriji racunara. Medjutim, moguce je kreirati i imenovani pipe koji jeste deo fajl sistema i moguce mu je pristupiti standardnim UNIX komandama za baratanje fajlovima. Pri dugom listanju se mogu uociti sledeci tipovi fajlova: d l b r c s p obican fajl, direktorijum, simbolicki link, blok specijalni fajl, raw specijalni fajl, karakter specijalni fajl socket i imenovani pipe.

SocketSocket je poseban tip fajla koji, slicno kao i pipe, omogucava interprocesnu komunikaciju. U sustini, socket predstavlja generalizaciju pipe-a u smislu da omogucuje komunikaciju dva procesa koji ne moraju da se izvrsavaju na istoj masini. Najcesci primer koriscenja socket-a je kod komunikacije dva procesa koji se izvrsavaju na razlicitim sistemima a medjusobno komuniciraju preko racunarske mreze.

Procesi

Kao poseban pojam u UNIX operativnom sistemu javlja se proces. Proces je osnovna jedinica UNIX-a koja se izvrsava. Komande i poslovi mogu se izvrsavati jednim procesom, ali mogu zahtevati i vise procesa. Postoji vise tipova procesa:

interaktivni procesi -procesi koji se zahtevaju i kontrolisu preko terminala. Mogu se izvrsavati u foreground ili background modu. batch procesi -procesi koji se izvrsavaju u batch obradi, tj. definisan je redosled procesa koji se izvrsavaju sekvencijalno. daemons -server procesi koji se izvrsavaju u background-u i cekaju dok neki drugi proces ne zahteva njihove usluge.

Svaki proces poseduje sledece atribute:

Process ID -jedinstveni identifikacioni broj procesa Nice number -broj koji definise prioritet procesa u zauzimanju resursa racunara TTY -oznaka terminala sa koga je proces startovan

ShellShell je komandni interpreter UNIX operativnog sistema i moze se posmatrati kao sloj koji se nalazi izmedju kernela i korisnika. Interaktivan je s obzirom da ima direktnu komunikaciju sa korisnikom. On prihvata korisnicke zahteve, interpretira ih i predaje kernelu na izvrsavanje. U vecini verzija UNIX operativnog sistema obicno su na raspolaganju sledece vrste shell-ova: Shell Bourne Shell C Shell Korn Shell Kratak opis /bin/sh - jednostavan za koriscenje, fleksibilan, sa ugradjenim programskim jezikom. /bin/rsh - redukovana verzija Bourne Shell-a. /bin/csh - komandni interpreter i programski jezik koji podrzava komandni bafer, kontrolu poslova i sintaksu C-like. /bin/ksh - dodatne mogucnosti u odnosu na Bourne Shell./bin/rksh - redukovana verzija Korn shell-a.

Turbo C /bin/tcsh - unapredjena verzija C shell-a. Poseduje bolje editovanje komandne linije, kompletiranje imena fajlova, ponavljanja komandi. Shell

Osnovne komande UNIX operativnog sistemaKomande predstavljaju skup instrukcija cije se izvrsenje zahteva od racunara. Programi koji se izvrsavaju odmah, bez kompajliranja, nazivaju se izvrsnim programima ili komandama. Veci broj programa sa srodnim funkcijama cine alate (tools). Tako se u UNIX-u srecu alati za editovanje teksta, razvojne alati i slicno. Sve komande UNIX-a se, prema svojim funkcijama, mogu svrstati u neku od sledecih klasa:

obrada teksta -tekst editori (ed, ex, vi), spell checker, tekst formateri i slicno, upravljanje podacima -kreiranje, organizacija i brisanje fajlova i direktorijuma, elektronske komunikacije -vise programa (write, mail) koji omogucavaju razmenu poruka medju korisnicima, programska okolina -mogucnost definisanja komforne programske okoline koriscenjem razlicitih usluznih programa, razvojno okruzenje -kompajleri i interpreteri raznih programskih jezika, linkeri, debageri,... ostali usluzni programi -graficka podrska, X Windows.

Sintaksa komandi: command option(s) argument(s) < Enter > ime komande odnosno programa cije se izvrsavanje command zahteva, option(s) argument(s) opcije koje odredjuju nacin izvrsenja komandi podaci nad kojima se izvrsava komanda

U komandama se mogu koristiti univerzalni znaci *,[] , ?. UNIX je CASE SENSITIVE operativni sistem, odnosno string otkucan VELIKIM i malim slovima nema isto znacenje. Na slici 6. prikazano je kako se komande izvrsavaju.

Slika 6. Komande vrse kontrolu i definisu akcije na UNIX-u. Svaku komandu jedinstveno odredjuje njeno ime i argumenti. Konvencija koja je, pri objasnjenju sintakse komandi, koriscena u narednom tekstu je sledeca: text [option] italic text [ option1 | option2 ]Password:

-tekst koji treba otkucati na isti nacin kao sto pise. -opcioni argumenti. -tekst koji treba zameniti odgovarajucom vrednoscu. - option1 ili option2. -poruke koje se dobijaju od racunara. Svi primeri su takodje prikazani u ovom fontu. -taster koji treba pritisnuti. -promt kojim se sistem javlja kada je spreman da prihvati komandu obicnog korisnika. -promt kojim se sistem javlja kada je spreman da prihvati komandu super korisnika.

< Ctrl > % #

Neki znaci koji se sa tastature dobijaju kombinovanjem kontrolnih i standardnih tastera imaju specijalna znacenja. Najznacajniji su: < Ctrl > S -izlaz na ekranu se privremeno zaustavlja. < Ctrl > Q -izlaz na ekranu se nastavlja. < Ctrl > D -najjednostavniji nacin odjavljivanja sa sistema. < Ctrl > C -prekid procesa. < Ctrl > Z -privremeno zaustavljanje procesa.

Login procedura

Login procedura je procedura kojom se korisnik prijavljuje sistemu. Svaki korisnik ima svoj racun na sistemu. Racun sadrzi dve informacije koje ga jedinstveno odredjuju:

User name - obicno ime, prezime ili inicijali za identifikaciju korisnika (8 znakova, alfanumerici). Takodje se cesto koriste termini login name, odnosno login ime. Password - lozinka kojom korisnik obezbedjuje tajnost svog racuna.

Password treba da bude duzine najmanje 6 znakova (8 su vazeci) i moze da sadrzi VELIKA slova, mala slova, brojeve, znake interpunkcije, pa cak i kontrolne znake. primer:Login: user_name Password: password IRIX System V Release 5.3 IRIX Copyright (c) 1988, 1989, 1990 Silicon Graphics, Inc All Rights Reserved %

Pri unosenju passworda se na ekranu nece nista prikazivati cime se sprecava mogucnost da neovlascena lica vide tudje passworde. Ukoliko je password nekorektno unet desava se sledece:Login:tanja Password: nekorektan Login incorect Login:

Proces odjavljivanja sa sistema je jednostavan i obavlja se komandom:% logout

ili pritiskom na tastere < Ctrl > D.

Komande opste namenePASSWD(1) passwd passwd je komanda kojom se menja ili postavlja prvi password novoprijavljenog korisnika. primer:% passwd Old password: old_password New password: new_password Re-enter new password: new_password

CAL(1) cal [[mesec] godina]

Ispisuje kalendar zahtevane godine, i/ili meseca. Ako komanda nema argumenata ispisuje se kalendar tekuceg meseca. mesec - vrednosti su od 1 - 12 godina - moze imati vrednosti od 1 do 9999 primer:% cal 2 1962 February S M Tu W Tn F . .

S

CLEAR(1) clear Brise sadrzaj koji se trenutno nalazi na displeju monitora i postavlja prompt i kursor u prvu liniju. DATE(1) date [mmddhhmm[yy]] Ukoliko argumenti nisu dati, na ekranu se ispisuje tekuci datum i vreme. U suprotnom, definise se novi datum i novo vreme sistemskog sata. Ovo zadnje moze da uradi samo super korisnik. mm - mesec dd - dan hh - sat (24 sata) mm - minuti yy - poslednje dve cifre godine primeri:% date Thu Mar 30 21:12:05 MET DST 1996 % date 10080045

U zadnjem primeru je postavljen datum: 8 oktobar tekuce godine, 12:45 a.m. MAN(1) man [-k] [section] title Komanda man predstavlja najbrzi nacin da se dodje do odredjenih objasnjenja vezana za UNIX operativni sistem. Skoro cela UNIX dokumentacija je smestena na disk. Ovom komandom se uputsvo za specificirani naslov izdvaja iz man baze i stampa na displej monitora. Argument title moze biti ime komande, ime specijalnog fajla, ili sistemskog poziva.

UNIX dokumentacija je podeljena u vise sekcija, kako je prikazano u sledecoj tabeli. Moze se desiti da jedan entitet postoji u vise sekcija. Na primer, postoji komanda write ali i sistemski poziv pod istim imenom. U ovakvim slucajevimo, do zeljenog objasnjenja se dolazi eksplicitnim zadavanjem rednog broja sekcije u pozivu man komande. man sa opcijom -k vrsi pretrazivanje kompletne baze (ili sekcije, ako je zadata) po kljucnoj reci title. Sekcija 1 6 2 3 4 5 7 1M primeri:% man ls Reformatting entry. Wait ... % man 2 write Reformatting entry. Wait ... % man -k slip

opis Commands Demos and Games System Calls Subroutines File Formats Miscellaneous Special Files Maintenance

FIND(1) find starting_dir [matching_criteria_&_actions] Komanda find se rekurzivno krece kroz hijerarhiju fajl sistema pocev od direktorijuma starting_dir trazeci fajlove koji zadovoljavaju logicki izraz matching_criteria i nad takvim fajlovima izvrsava akcije actions. U opisu kreiranja matching_criteria, argument n predstavlja decimalnu vrednost gde +n znaci vise od n, -n manje od n dok n znaci tacno n. Logicki izraz se formira od sledecih primitiva: -atime n -mtime n -size n[c] -type c -name name -user usr -group grp -perm p -print istinito ako je fajlu pristupano u n dana istinito ako je fajl modifikovan u n dana istinito ako velicina fajla iznosi n blokova gde je blok, kod vecine verzija UNIX-a velicine 512 bajtova. Ako iza n sledi c, velicina fajla je u broju znakova. istinito ako je fajl tipa c (f-obican fajl, d-direktorijum, ...) istinito ako je ime fajla name (dozvoljeno koriscenje * i ?) istinito ako je vlasnik fajla usr istinito ako je grupa fajla grp istinito ako je pristupna dozvola fajlu p. Pristupna dozvola se zadaje oktalno (videti chmod). uvek istinito. Ispisivanje puta trazenog fajla

-exec cmd -ok cmd -prune

istinito ako cmd vrati nulu. Ako iza cmd sledi '{}', onda se komanda izvrsava nad fajlom koji zadovoljava matching_criteria. slicno kao -exec samo pre izvrsavanja komande cmd nad pronadjenim fajlom, od korisnika se trazi da verifikuje akciju sa y. iskljucivanje fajla iz akcije.

Vise komandi se odvajaju separatorom ;. primeri:% find / -name proba -print /users/tanja/tmp/proba

Trazi se od root direktorijuma fajl sa imenom proba i pronadjen je na direktorijumu /users/tanja/tmp.% find /usr/people -size +1000 \(-mtime +30 \ -o -atime +120 \) -exec ls -l '{}' ';'

Od direktorijuma /usr/people traze se fajlovi cija je velicina veca od 1000 blokova, nisu menjani vise od 30 dana ili kojima nije pristupano vise od 120 dana. Pronadjeni fajlovi se listaju.% find /usr/people/tanja \(-name a.out -o -name core \ -o -name ".BAK.*"\) -atime +14 -exec rm -f '{}' ';'

Ispod direktorijuma /usr/people/tanja, pronadji sve fajlove a.out, core i one cije ime pocinje sa .BAK., kojima nije pristupano vise od 14 dana i izbrisi ih. GREP(1) grep [opcije] [expression] [files ...] Komanda grep pretrazuje navedene fajlove (ili standardni ulaz). Svaka linija koja zadovoljava expression stampa se na standardni izlaz. U slucaju da se istovremeno pretrazuje vise fajlova, ispred svake linije stampa se i ime fajla iz koje potice. Dozvoljene su sledece opcije: -v -c -l -h -n -s -i primeri:% grep automation srle.txt and automation placement

Prikazuju se sve linije koje ne zadovoljavaju expression prikazuje se samo broj linija sa poklapanjima prikazuju se samo imena fajlova u kojima je ustanovljeno poklapanje ne prikazuju se imena fajlova pored imena fajla stampaju se i brojevi linija ne prikazuju se poruke o greskama velika i mala slova se tretiraju isto

Prikazi sve linije iz fajla srle.txt koje sadrze rec automation.% grep automation srle.txt tanja.txt srle.txt: and automation placement % grep '???' poruka He really wondered why? Why??? % grep -li serial *.h

Rad sa direktorijumimaCD(1) cd [direktorijum] Promena tekuceg (radnog) direktorijuma. Komanda kojom se omogucava kretanje po stablu fajl sistema. primeri:% cd dir4 % cd .. % cd % cd ../dir2/dir3 % cd / % cd /users/tanja/dir2/dir3 % cd -

-tekuci direktorijum je dir4 -vracanje na prethodni, parent direktorijum -vracanje na HOME direktorijum -relativno kretanje po stablu -root direktorijum postaje tekuci -primer sa apsolutnim putem -vracanje na direktorijum koji je bio tekuci pre zadnje cd komande

LS(1), LL(1) ls [-alpFC] [name] Lista sadrzaj direktorijuma name. Ukoliko direktorijum nije zadat, lista se tekuci direktorijum. -a -l -p -F -C -lista se celokupan sadrzaj direktorijuma ukljucujuci i skrivene fajlove (cija imena pocinju sa .) -lista se sadrzaj direktorijuma u dugackom formatu -direktorijumi u listi su oznaceni kosom crtom (/) -u listi, direktorijumi su oznaceni sa (/), a izvrsni fajlovi sa (*), -lista sadrzaja se stampa u vise kolona.

Obicno je ll alias za ls -al. primeri:% ls proba.c novi.c % ls -aF .login .profile Makefile proba.c novi.c a.out* tmp/

% ls -l -r--r--r-- 1 root sys 1145 -rw-rw-rw- 1 tanja user 85 -rwxrwxrwx 1 tanja user 1046

Oct 23 Nov 7 Nov 15

18:41 14:47 13:01

READ.ME boja.c create

Pored imena, dugacki listing za svaki fajl ili direktorijum daje i sledece informacije: tip fajla, pristupne dozvole, broj hard linkova, vlasnika fajla, grupu kojoj fajl pripada, velicinu u bajtovima, datum i vreme kreiranja, i na kraju, ime fajla. MKDIR(1) mkdir dirname Kreira direktorijum sa imenom dirname gde ime moze da bude zadato kao apsolutni ili relativni put. primer:% mkdir /usr/people/tanja/newdir

RMDIR(1) rmdir dirname Brise prazan direktorijum sa imenom dirname. primer:% cd /usr/people/tanja % rmdir newdir

PWD(1) pwd Komanda pwd ispisuje apsolutni put radnog, to jest tekuceg direktorijuma. primer:% pwd /home/srle

Rad sa fajlovimaCAT(1) cat file1 file2 ... cat cita sadrzaj fajlova file1, file2, ... i ispisuje ih na standardni izlaz. primeri:% cat proba Ovo je probni fajl za demonstraciju komande CAT I linija II III Kraj

% cat file1 file2 > file3

Stampa se sadrzaj fajlova file1 i file2, umesto na standardni izlaz (zbog redirekcije) u treci fajl file3. CHMOD(1) chmod mode name Komanda chmod vrsi promenu pristupnih dozvola jednom ili vecem broju fajlova koji su zadati sa name. Nova pristupna dozvola je definisana sa mode. UNIX operativni sistem omogucava selektivno definisanje korisnika koji imaju pristup odredjenom fajlu ili direktorijumu. Za svaki fajl ili direktorijum postoje tri klase korisnika:

vlasnik -korisnik koji je kreirao fajl ili direktorijum, grupa -vise korisnika je definisano kao grupa, a svaki fajl pripada jednoj grupi, ostali -ostali korisnici sistema koji nisu ni vlasnik ni clanovi grupe.

Takodje, svaki fajl ili direktorijum ima tri nacina pristupa:

read -fajl moze samo da se cita, direktorijum moze samo da se lista. write -dozvoljena je modifikacija fajla, na direktorijumu mogu da se kreiraju novi fajlovi i brisu postojeci. execute -fajl je izvrsni. Kod direktorijuma je dozvoljeno kopiranje, definisanje direktorijuma kao radnog itd.

U odnosu na prethodno opisane klase i pristupe za svaki fajl ili direktorijum definisan je mod: rwx rwx rwx

vlasnik grupa ostali Ukoliko stoji "-" pristup je zabranjen. Postoje i druge dozvole pristupa:

t (sticky bit) - izvrsna verzija ostaje u memeoriji s (set UID tj. GID) - postavljanje identifikacionog broja korisnika ili grupe l (File locking) - zakljucan fajl

Komandom chmod moguce je menjati pristup fajlu. Argument mode definise se na sledeci nacin: I oktalno

II simbolicki

primeri:% chmod 444 dat1 % ls -l dat1 -r--r--r-- 1 tanja user % chmod 644 dat1 % ls -l dat1 -rw-r--r-- 1 tanja user % chmod a=r,u+w dat1 % ls -l dat1 -rw-r--r-- 1 tanja user % chmod a-rwx * % ll ---------- 1 tanja user % chmod u+rw,g+r,o+r * % chmod u+rw,go+r * % ll -rw-r--r-- 1 tanja user 1046 1046 1046 1046 Nov 15 Nov 15 Nov 15 Nov 15 13:01 13:01 13:01 13:01 dat1 dat1 dat1 dat1

1046

Nov 15

13:01

dat1

UMASK(1) umask access_mod

Definisanje default pristupnih dozvola. To znaci, nakon izvrsavanja ove komande, svi novokreirani fajlovi ce imati definisani mod. Pristupna dozvola se generise kao oktalni komplement zeljenog pristupa. primer: Ako se zeli da novi fajlovi imaju pristupne dozvole 750 (rwxr-x---) argument komande umask se generise kao 777-750=027.% umask 027 % echo "ghjgjghj" > proba % ll proba -rw-r----1 srle users

9 Mar 31 11:15 proba

Bez obzira sto je x pristupna dozvola za vlasnika i grupu dozvoljena definisanom maskom, fajl proba je nema jer nije izvrsni. CHOWN(1) chown owner file ... Promena vlasnika fajlova file, ... u owner primer:# ls -l *.c -rw-rw-rw- dejan user -rw-rw-rw- dejan user # chown tanja *.c # ls -l *.c -rw-rw-rw- tanja user -rw-rw-rw- tanja user 751 102 751 102 Nov 18 Nov 20 Nov 18 Nov 20 12:16 20:48 12:16 20:48 prvi.c drugi.c prvi.c drugi.c

CHGRP(1) chgrp group file Komanda kojom se menja grupa specificiranom fajlu. group - ime nove grupe, file - ime fajla kome se menja grupa. primer:% ls -l *.c -rw-rw-rw- tanja -rw-rw-rw- tanja % chgrp cad *.c % ls -l *.c % ls -l *.c -rw-rw-rw- tanja -rw-rw-rw- tanja user 751 user 102 Nov 18 Nov 20 12:16 20:48 prvi.c drugi.c

cad cad

751 102

Nov 18 Nov 20

12:16 20:48

prvi.c drugi.c

CMP(1) cmp -ls file1 file2 Komanda za poredjenje sadrzaja dva fajla. Ukoliko su fajlovi identicni, nema komentara, ali ukoliko ima razlika ispisuje se broj bajtova i broj linija u kojima se nalaze razlike.

-l ispisuje razlike izmedju dva fajla, -s vraca samo kod (0-iste, 1-razlicite, 2-ne moze da pristupi argumentu). primer:% cmp proba.c proba1.c

DIFF(1) diff dir1 dir2 diff file1 file2 Slicno kao cmp, uporedjuje sadrzaj dva fajla. Za razliku od cmp, diff je u stanju da uporedjuje i direktorijume. Osim ovoga, daje siri i precizniji izvestaj o eventualnim razlikama. CP(1) cp file new_file cp file1 [file2 ...] dest_directory cp dir1 [dir2 ...] dest_directory Komandom cp mogu se obaviti sledece akcije:

kopira se sadrzaj fajla file u fajl new_file. Ukoliko fajl new_file postoji, njegov stari sadrzaj ce biti unisten. fajlovi file1, file2, ... kopiraju se na postojeci direktorijum dest_directory, poddirektorijumi dir1, dir2, ... kopiraju se u novi ili postojeci direktorijum dest_directory.

prinmeri:% ls proba.c % cp proba.c novi.c % ls proba.c novi.c % ls -p proba.c tmp/ % cp proba.c tmp % ls -p proba.c tmp/ % cd tmp % ls novi.c

MORE(1) more file Lista se sadrzaj fajla strana po strana gde je velicina stranice jednaka broju linija koje monitor moze da prikaze. Ukoliko program nije stigao do kraja fajla, na dnu ekrana ce biti ispisano -More--. Pritiskom na taster < Enter > ispisuje se jos jedna linija, a pritiskom na taster < Space >, jos jedan ekran. Ova komanda takodje moze da posluzi u slucajevima kada prikazaivanje

rezultata neke druge komande zahteva vise prostora nego sto to monitor moze da pruzi. Stranicenje rezultata ovakve komande vrsi se njenim pajpovanjem sa komandom more. primeri:% more program.c % ls -l | more

MV(1) mv file1 file2 mv file1 dest_directory Promena imena fajla ili premestanje fajla na drugi direktorijum. primeri:% ls proba.c tmp % mv proba.c novi.c % ls novi.c tmp % ls -p novi.c tmp/ % mv novi.c tmp % ls -p tmp/ % cd tmp % ls novi.c

RM(1) rm [-irf] name Komanda za brisanje fajla name. -i - brisanje fajla uz verifikaciju, -r - rekurzivno brisanje, -f - brise bez provere dozvola. primeri:% rm /users/tanja/tmp/novi.c % rm -r tanja

Upozorenje!!! Sa zadnjom varijantom komande treba biti oprezan jer brise sve fajlove na direktorijumu, poddirektorijumima ispod njega i sam direktorijum. LN(1) ln [-s] name new_name Komanda ln kreira fajl new_name koji je link ka vec postojecem fajlu name. Parametar name moze biti i direktorijum ili specijalni fajl. Ako je parametar -s zadat, kreira se simbolicki, a ako nije, nastaje hard link. Kako je vec objasnjeno, ovo je mehanizam koji omogucava da se jednom fizickom fajlu dodele fise imena. To znaci da imena name i new_name nakon izvrsavanje ove komande postaju ekvivalentna.

COMPRESS(1) compress file_name uncompress file_name compress kompresuje fajl file_name i daje mu novo ime sa ekstenzijom .Z. uncompress je suprotno od compress. U novije vreme se pojavljuju i drugi programi za ove namene. Na primer, DOS-like zip i unzip, ili gzip i gunzip ali njihovo postojanje na konkretnom sistemu zavisi od administratora. SPLIT(1) split [-l lines] [-b bytes[bkm]] in_file [prefix] Komanda split deli jedan veliki fajl in_file na vise malih. Velicina manjih fajlova se definise u broju linija -l opcijom ili u bajtovima -b opcijom. Imena novih fajlova pocinju sa prefix a split dodaje sufikse aa, ab, ac, i tako dalje. Ako se prefix ne zada podrazumeva se 'x' tako da nastali fajlovi imaju imena xaa, xab,... primeri:% ll -rw-r--r-1 srle users % split -b 10k arhiva.zip % ll -rw-r--r-1 srle users -rw-r--r-1 srle users -rw-r--r-1 srle users -rw-r--r-1 srle users -rw-r--r-1 srle users -rw-r--r-1 srle users -rw-r--r-1 srle users % rm xa* % split -b 15k arhiva.zip sp % ll -rw-r--r-1 srle users -rw-r--r-1 srle users -rw-r--r-1 srle users -rw-r--r-1 srle users -rw-r--r-1 srle users % cat sp* > novo.zip % rm sp* % ll -rw-r--r-1 srle users -rw-r--r-1 srle users 51889 Mar 26 23:23 arhiva.zip 51889 10240 10240 10240 10240 10240 689 Mar Mar Mar Mar Mar Mar Mar 26 26 26 26 26 26 26 23:23 23:25 23:25 23:25 23:25 23:25 23:25 arhiva.zip xaa xab xac xad xae xaf

51889 15360 15360 15360 5809

Mar Mar Mar Mar Mar

26 26 26 26 26

23:23 23:27 23:27 23:27 23:27

arhiva.zip spaa spab spac spad

51889 Mar 26 23:23 arhiva.zip 51889 Mar 26 23:32 novo.zip

UUENCODE(1) i UUDECODE(1) uuencode file name uudecode file Uuencode i uudecode se koriste za prenos binarnih fajlova kroz medijume koji podrzavaju samo tekstualne podatke. Takav medijum je, na primer, elektronska posta. Komanda uuencode cita podatke is fajla file i koduje ih samo vidljivim ascii znacima. Kodovani podaci se stampaju na standardni izlaz tako da, ako se zeli formiranje fajla, treba koristiti redirekciju.

uudecode cita podatke iz file koji je kreiran programom uuencode, dekoduje ih a rezultat ove operacije smesta u fajl pod imenom name koji je zadat jos pri kodovanju. primeri:% ll -rw-r--r-1 srle users 51889 Mar % uuencode arhiva.zip novo.zip > arhiva.uu % ll -rw-r--r-1 srle users 71521 Mar -rw-r--r-1 srle users 51889 Mar % uudecode arhiva.uu % ll -rw-r--r-1 srle users 71521 Mar -rw-r--r-1 srle users 51889 Mar -rw-r--r-1 srle users 51889 Mar 26 23:44 arhiva.zip 26 23:52 arhiva.uu 26 23:44 arhiva.zip 26 23:52 arhiva.uu 26 23:44 arhiva.zip 26 23:53 novo.zip

Radna okolina i odgovarajuce komandeUNAME(1) uname Ispisuje verziju instaliranog UNIX operativnog sistema. primer:% uname -a IRIX IRIX

5.3

06011629

IP6

WHOAMI(1) whoami Ispisuje ime tekuceg korisnika. primer:% whoami srle

WHO(1) who Daje spisak korisnika koji trenutno rade na sistemu. Izlaz ima oblik: name line time gde je: name - korisnicko login ime, line - ime komunikacione linije, time - vreme kada je korisnik prijavljen sistemu. primer:% who

srle tanja dejan

console ttyp1 ttyp2

Nov Nov Nov

24 24 24

13:45 14:21 15:05

Slicnu funkciju uma i komanda w s tom razlikom sto daje detaljnije informacije o logovanim korisnicima i njihovim trenutnim aktivnostima. primer:% w 11:31am up 1:11, 2 users, User tty from srle tty2 srle tty1 komande.html load average: 0.00, 0.00, 0.00 login@ idle JCPU PCPU 10:29am 1 10:24am 30 29

what w joe

DU(1) du [-sabr] names Daje zauzece diska u broju blokova (1 blok obicno iznosi 512 byte). -s daje samo totalnu duzinu fajla ili direktorijuma definisanih sa names -a ispisuje duzinu svih fajlova na direktorijumu, -b velicina se ispisuje u bajtovima, -k velicina se ispisuje u KB, names - ime fajla ili direktorijuma. Ako je izostavljen podrazumeva se tekuci direktorijum. primeri:% du 8 1 22 ./WorkSpace ./dumpster

Ovako pozvana komanda daje informacije o tekucem direktorijumu i direktorijumima ispod.% du file 4 filename

Daje duzinu fajla file. ENV(1) env U toku registrovanja novog korisnika na njegov HOME direktorijum kopiraju se odredjeni start-up fajlovi koji definisu njegovu radnu okolinu. Komandom env mogu se videti parametri radne okoline a medju njima najznacajniji su sledeci: HOME PATH SHELL HOME direktorijum tekuceg korisnika, spisak direktorijuma gde se nalaze komande, shell koji se koristi,

TERM MAIL LOGNAME PWD USER HOST DISPLAY primer:

tip terminala, fajl gde se smesta prispela posta, login ime, tekuci direktorijum, ime tekuceg korisnika, ime racunara, display za X11 Windows System, islicno.

% env HOME=/home/srle PATH=/usr/local/bin:/bin:/usr/bin:/usr/X11/bin:.:/usr/TeX/bin:/home/srle/bi n: SHELL=/bin/tcsh TERM=vt100 MAIL=/var/spool/mail/srle LOGNAME=srle PWD=/home/srle/kurs USER=srle HOST=light

Naknadno, promenljive radne okoline se mogu promeniti komandom setenv ili izbrisati komandom unsetenv. primer:% setenv TERM vt100 % unsetenv DISPLAY

Arhiviranje (tar)TAR(1) tar [arguments] [name] Komanda za zapis, citanje i listanje sadrzaja arhive. Argumenti: -c - zapis od pocetka arhive. -r - zapis na kraju arhive (dodavanje fajlova starom sadrzaju, za System V pogledati komandu mt). -t - listanje sadrzaja arhive. -x - citanje sadrzaja arhive i zapis na disk. -f - definisanje arhive (naredni argument je specijalni fajl trake ili ime obicnog fajla arhive). -v - za vreme snimanja ili citanja arhive ispisuju se imena fajlova koji se trenutno obradjuju (verbose mod).

name - ime fajla ili direktorijuma koji se arhivira ili restaurira (ukljucuju se i podirektorijumi). primeri:% tar -tvf /dev/tape

Lista sadrzaj arhive koja je smestena na traci.% tar -cvf /dev/tape *.c

Snimanje od pocetka trake svih fajlova sa ekstenzijom c.% tar -rvf /dev/tape proba

Snimanje fajla proba na kraju arhive.% tar -cvf /dev/tape srledir

Snimanje na traku direktorijuma srledir, ukljucujuci celo podstablo.% tar -xvf /dev/tape proba

Rekonstrukcija sadrzaja fajla proba tj. kopiranje fajla proba sa trake na disk.

Komande za stampanjeKako je UNIX multi-user operativni sistem stampaci se povezuju preko spooler-a (Simultaneous Pheripheral Outpu On-Line). Ovakav mehanizam omogucava koriscenje izlaznih uredjaja od strane vise korisnika bez konflikta. LP(1) lp [-d printer_name] file ... Komanda kojom se zahteva izlaz na stampac. Opcija -d (destination) odredjuje zahtev za drugim stampacem. Ukoliko se ona ne navede smatra se da se zahteva default stampac. CANCEL(1) cancel [ids] [printers] Komanda kojom se zahteva prekid stampanja tj. zahtev se izbacuje iz reda cekanja. Postoji veliki broj opcija: moze se zahtevati prekid odredjenog zahteva, prekid svih zahteva nekog korisnika, prekid svih zahteva za odredjenim stampacem itd. LPSTAT(1)

lpstat -t Komanda kojom se dobijaju sve informacije vezane za status spooler-a i red cekanja zahteva. Na BSD sistemima pogledati komande lpr, lpq i lprm.

Kontrola procesaSHUTDOWN(1M) Za BSD UNIX: /etc/shutdown [-h | -r] [sec] Prekida sve procese, zaustavlja ili restartuje sistem. Moze je izvrsiti samo sistem administrator (prijavljen na sistemu kao root).

-h - prekida sve procese i zaustavlja sistem. Tek nakon ove komande sistem se sme ugasiti i hardverski (power off). -r - prekida sve procese i restartuje sistem. sec - vreme posle koga se komanda izvrsava.

primeri:

# /etc/shutdown - h 0 . . . System halted ...

Zaustavljanje sistema.# /etc/shutdown -r 0 Login:

Restartovanje sistema. Za System V: /etc/shutdown [-y] [-ggrance_period] [-iinit_state]

-y -izvrsenje komande sa unapred potvrdnim odgovorima -ggrance_period -vreme za koje ce se obaviti gasenje sistema (default 60 sekundi) -iinit_state -init stanje u koje se postavlja sistem (0 - sistem se gasi, 6 - sistem se restartuje).

primeri:

# shutdown -g0 -y

Zaustavljanje sistema.# shutdown -g0 -i6 -y

Restartovanje sistema. SU(1) su [-] [name] Omogucava privremeni login na root ili neki drugi korisnicki racun bez odjavljivanja sa svog racuna. Naravno, da bi ovo bilo moguce, neophodno je poznavanje passworda drugog racuna. Pri promeni korisnika, radna okolina se ne menja sve dok se su ne izvrsi sa -. Odjavljivanje sa novog racuna se obavlja standardnom (sa < Ctrl >D ili logout komandom).% su password: xxxxxx

primeri:

Privremeno prijavljivanje kao super korisnik.% su - zeljko password: xxxxxx

Privremeno prijavljivanje kao korisnik zeljko. KILL(1) kill [-signo | -signame] PID ... Komanda koja ubija aktivirane procese. signo - broj signala koji se salje procesu signame - ime signala koji se salje procesu (videti signal(5)) PID - identifikator procesa primeri:% kill 6135 % kill -INT 6135

Signalizira se procesu broj 6135 da prekine izvrsavanje dajuci mu sansu da se regularno zavrsi (da izbrise privremene fajlove i slicno)% kill -9 6135 % kill -KILL 6135

Odmah prekidaju proces broj 6135. PS(1) ps [opcije]

Stampa na ekranu informacije o trenutno aktivnim procesima. Opcije: -e - stampa informacije o svim procesima; -f - generise potpuni listing; primer:% ps -ef PID 0 1 2 3 561 594 180

TTY ? ? ? ? console console ttyd2

TIME 0:00 0:02 0:00 0:00 0:01 0:00 0:00

COMMAND sched init vhand bdflush grcond Xsgi getty

Daje detaljnu listu trenutno aktivnih procesa. Pojedine kolone imaju sledeca znacenja: UID PID TTY TIME COMMAND% ps

- user ID; - ID procesa; - ime komunikacione linije (? ukoliko nije terminal); - vreme startovanja procesa; - ime komande koja se izvrsava.

Daje listu procesa koji su startovani sa tekuceg terminala.% ps -u user_name

Daje listu aktivnih procesa korisnika user_name. Na BSD sistemima, opcije ps komande se razlikuju ali je najcesce u upotrebi ps -ax koja daje detaljnu listu aktivnih procesa i ekvivalentna je komandi ps -ef na System V UNIXu.

Komunikacija sa drugim korisnicima sistemaSa ostalim korisnicima UNIX sistema moze se komunicirati na vise nacina. Najcesce korisceni su preko usluga koje nude mail, write i talk programi. Pomocu mail programa korisnik moze poslati poruku drugom korisniku u njegovo postansko sanduce (mailbox), bez obzira da li je korisnik trenutno prijavljen sistemu ili ne.

Program write omogucava interaktivnu razmenu poruka dva korisnika koji istovremeno rade na sistemu. Program talk nudi slicne mogucnosti kao i write s tom razlikom sto talk efikasnije kontrolise displej monitora pa je i interaktivna komunikacija dva korisnika UNIX sistema preglednija. MAIL(1) Omogucava razmenu poste sa drugim korisnicima. Sistem je slican uobicajenoj posti. Poruke u obliku pisama salju se korisnicima. Nakon prijavljivanja sistemu svaki korisnik biva obavesten da li za njega ima prispelih poruka. Za svakog korisnika je na direktorijumu /usr/spool/mail kreiran po jeda fajl za pristigle poruke. Poruke koje su procitane cuvaju se u korisnickom mailbox-u na HOME direktorijumu. Slanje pisama obavlja se komandom:% mail user ... Uneti sadrzaj poruke ... < Ctrl> D

Unapred pripremljeno pismo se salje korisniku komandom:% mail user < pismo

ili vecem broju korisnika:% mail user1 user2 ... usern < pismo

Slanje poste korisnicima kroz mrezu obavlja se upotrebom e-mail adrese koja ima sledeci oblik:ime_korisnika@ime_drugog_sistema

primer:

% mail [email protected]

Nakon prijavljivanja sistemu korisnik dobija poruku:You have mail

a pristiglu postu cita takodje mail komandom:% mail

U ovom slucaju, mail ulazi u interaktivni rad kada su na raspolaganju sledece komande: ? < Enter > citanje sledeceg pisma

? d < Enter > ? d n m < Enter > ? s n file < Enter > ? q < Enter > primer:

brisanje tekuceg pisma brisanje poruka od n do m zapisivanje poruke u fajl file napustanje programa i povratak u shell.

% mail phyllis My meeting with Smith's group tomorrow hes been moved up to 3:00 so I won't be able to see you then. Could we meet in the morning instead. < Ctrl > D %

WRITE(1) Omogucava direktno slanje poruka na terminal drugog korisnika koji trenutno radi na sistemu. Komandom: write user se zahteva uspostavljanje veze izmedju terminala koji se koristi i terminala na kome radi korisnik user. Za pocetak sesije oba korisnika moraju da pozovu write program. Dozvola ili zabrana primanja poruka od starne drugih korisnika vrsi se komandama: mesg yes odnosno mesg no Prekid sesije obavlja se sa < Ctrl > D. primer:

TALK(1) Startovanje talk sesije obavlja jedan od korisnika sledecom komandom:

talk user_name2[@host_name2] gde je user_name2 ime korisnika sa kojim se zeli razgovor, a host_name2 je ime racunara na kome taj korisnik trenutno radi. host_name2 je opcioni parametar i neophodan je samo u slucaju kada se zeli talk sesija izmedju dva korisnika koji ne rade na istom racunaru. Nakon iniciranja sesije, drugi korisnik biva obavesten da korisnik user_name1 zeli da komuniciraju i sugerise mu se da, ukoliko zeli razgovor, odgovori slicnim pozivom talk programa:Answer with: talk user_name1@host_name1

Kada drugi korisnik odgovori, oba bivaju obavestena da je veza uspostavljena. Ekran se deli na dva dela, za svakog korisnika po jedan, i komunikacija moze poceti. Komuniciranje se zavrsava kada bilo koji korisnik prekine sesiju sa < Ctrl > C.

Editor teksta VIUNIX operativni sistem standardno prate nekoliko editora teksta. To su pre svega, editori linijskog tipa ed i ex, i ekranski editor vi. Editor vi poseduje sve mogucnosti koje imaju ed i ex i u sustini predstavlja ekranski orijentisan korisnicki interfejs ka njima. Po potrebi, vi ih poziva u pozadini a rezultate koje oni daju, prikazuje na displeju monitora. No bez obzira na to, korisnika ne treba da interesuje veza editora vi sa drugim editorima ili usluznim programima i moze ga posmatrati kao nezavisna celina. Na samom pocetku treba napomenuti da vi ume da stvori averziju korisnika prema njemu. Relativno je komplikovan za upotrebu jer ima tri moda rada u kojima se funkcije znakova generisanih sa tastature drasticno razlikuju. Obicno ne koristi kontrolne tastere tipa PageUp, PageDown kao ni funkcijske tastere tako da se komande zadaju sa standardnih tastera i njihovom kombinacijom sa Ctrl. Ne poseduje menije na koje smo navikli kod, uslovno receno user friendly editora (DOS-ov edit, na primer). Medjutim, treba imati u vidu da je osnova editora vi definisana pocetkom sedamdesetih, istovremeno sa pocetkom razvoja UNIX-a. Jos onda je postavljen cilj da vi funkcionise na raznim tipovima terminala od kojih vecina nije imala ni preveliki ni premocan skup kontrolnih sekvenci, kao ni standardizovan izgled tastature. Naravno, u ovome se uspelo ali je cena placena upravo cinjenicama koje su pobrojane kao mane ovog editora. Kao i obicno, sve je stvar navike. Nakon boljeg upoznavanja sa vi editorom, svakom korisniku ce biti jasno da komande za globalnu zamenu i pretrazivanje i rad sa baferima koje on nudi, predstavljaju glavni nedostatak pomenutih user friendly editora. U daljem tekstu sledi kratak opis odredjenog skupa komandi vi editora pri cemu je izbor prilagodjen potrebama osrednjih korisnika. Ako, nakon citanja ovog teksta, neko i dalje smatra da vi nije editor po njegovoj meri, preporucuju mu se sledeci editori:

emacs, joe i jed s tim sto treba imati u vidu da oni nisu standardni deo UNIX distribucije.

Modovi rada editoraEkranski editor VI se moze naci u jednom od tri moda rada:

komandni - svi znaci otkucani sa tastature se tretiraju kao komande, insert -sluzi za unos teksta, tasteri imaju normalno znacenje, mod zadnje linije -sluzi za unos duzih komandnih linija.

Nakon startovanja, editor ulazi u komandni mod. Prelazak u insert ili mod zadnje linije je jedino moguc iz komandnog moda. Prelazak iz komandnog u insert mod se ostvaruje vecim brojem komandi za dodavanje teksta ali se napustanje insert moda i povratak u komandni obavlja uvek pritiskom na < Esc > taster. U mod zadnje linije je moguce preci jedino komandom ':'. Iz ovog moda se izlazi unosenjem zeljene komande i njenim izvrsavanjem aktiviranjem tastera < Enter > ili < Esc > tasterom kada se mod zadnje linije napusta odmah.

Poziv editora:vi file vi + file vi file1 file2 ... filen - postavlja kursor u prvu liniju fajla file. - postavlja kurzor u zadnju liniju fajla file. - sukcesivno editovanje vise fajlova. Po zavrsetku editovanja jednog, sledeci se poziva sa :next ili skraceno :n.

Izlaz iz editora::wq :q! :w! :x - zapisi i izadji - izadji bez zapisivanja bez obzira na ucinjene izmene. - prepisi fajl iako je 'Read only' - Isto kao :wq

Poziv drugih fajlova::e file :r file - u editor poziva drugi fajl na editovanje. Novi fajl brise iz bafera prethodni tekst. - ucitava fajl file i umece ga u tekst ispod tekuce linije.

Pomeranje kurzora:^ $ < Enter > h j k l - pomeranje kurzora na prvi neblanko znak tekuce linije - pomeranje kurzora na kraj tekuce linije - pomeranje kurzora na pocetak naredne linije - pomera kurzor u levo za jednu poziciju - pomera kurzor na dole za jednu poziciju - pomera kurzor na gore za jednu poziciju - pomera kurzor u desno za jednu poziciju

NAPOMENA: Obicno rade i strelice.

Kretanje kroz prozor:< Ctrl > f < Ctrl > b - pomera ceo prozor unapred kroz fajl - pomera ceo prozor unazad kroz fajl

Brojevi linija i pretrazivanje::n /string ?string / ? < Ctrl > g - postavlja kurzor na pocetak n-te linije - pretrazivanje fajla po nizu znakova string unapred - pretrazivanje fajla po nizu znakova string unazad - ponavlja prethodno pretrazivanje unapred - ponavlja prethodno pretrazivanje unazad - daje informaciju o tekucoj liniji i fajlu koji se edituje

UNDO i REPEATu . - vraca fajl na stanje pre izvrsavanja zadnje komande - ponavlja zadnju komandu

Brisanje teksta:x X :i,jd - brise znak ispred kurzora - brise znak iza kurzora - brise tekst od i-te do j-te linije

dd dw

- brise tekucu liniju - brise tekucu rec

Izmene teksta:s r cw :i,js/tekst1/tekst2/option :i,jg/tekst/s/tekst1/tekst2/option - zamenjuje znak ispod kurzora novootkucanim tekstom. Zavrsava se sa < Esc >. - zamenjuje samo znak ispod kurzora - zamenjuje tekst od kurzora do kraja reci novim tekstom - od i-te do j-te linije, zameni tekst1 sa tekst2. - od i-te do j-te linije, u linijama koje sadrze tekst, zameni tekst1 sa tekst2.

Komande za globalnu zamenu mogu da imaju i dodatni parametar option. Bez argumenta option, u svakoj liniji ce se izvrsi maksimalno jedna zamena teksta tekst1 i to na mestu njegovog prvog pojavljivanja. Ako se isti tekst pojavljuje vise puta u istoj liniji, na ostalim mestima ostaje nepromenjen. Ako je option jednak g onda se zamena obavlja globalno. Trazeni tekst koji se pojavljuje vise puta u istoj liniji, bice zamenjen na svim mestima. Takodje je korisna i opcija c koja omogucava globalnu zamenu ali uz verifikaciju. Kada se trazeni tekst pronadje, od korisnika se ocekuje da sa y ili n kaze da li pronadjeni tekst treba zameniti ili ne. primeri::1,$s/srdan/srdjan/g

od prve do zadnje linije menja 'srdan' sa 'srdjan':1,$s/^/tekst/

svakoj liniji dodaje 'tekst' na pocetku:1,$s/$/tekst/

svakoj liniji dodaje 'tekst' na kraju

Unos tekstaa i o O unosenje teksta pocev od pozicije prve udesno od pozicije kurzora. Zavrsava se sa < Esc >. unosenje teksta pocev od tekuce pozicije kurzora. Zavrsava se sa < Esc >. kreira novu liniju ispod tekuce i ulazak u 'insert' mod. Zavrsava se sa < Esc >. kreira novu liniju iznad tekuce i ulazak u 'insert' mod. Zavrsava se sa < Esc >.

Rad sa baferimaVI poseduje dve vrste bafera: neimenovane i imenovane. Neimenovanih ima 9 a referenciranje na njih se obavlja navodjenjem njihovog rednog broja. Komande dd i yy menjaju sadrzaj ovih bafera tako sto se novi sadrzaj uvek upisuje u prvi a pri tome se stari sadrzaj bafera pomera iz prethodnog u naredni (rade kao pomeracki registri) pri cemu se sadrzaj poslednjeg (devetog) gubi. Imenovanih bafera ima 26 a imena im se sastoje od slova engleske abecede. Mala i velika slova predstavljaju fizicki iste bafere ali se u radu razlikuju. Na primer, zapis u bafer a brise njegov prethodni sadrzaj dok je zapis u bafer A zapis u isti bafer ali se novi sadrzaj dodaje prethodnom. dd p P yy "anyy "ap "np brise tekucu liniju i smesta njen sadrzaj u neimenovani bafer. stampa sadrzaj prvog neimenovanog bafera ispod tekuce linije stampa sadrzaj prvog neimenovanog bafera iznad tekuce linije smesta tekucu liniju u neimenovani bafer (ne brise je) pamti u bafer 'a' n linija stampa sadrzaj bafera a ispod tekuce linije. stampa sadrzaj n-tog neimenovanog bafera ispod tekuce linije

Sastavljanje i rastavljanje linija:< Shift > j - sastavlja tekucu i narednu liniju;

Multipliciranje komandiInstrukcije komandnog moda je moguce multiplicirati, jednostavno navodjenjem zeljenog broja pre unosenja komande. Ovo moze biti izuzetno korisno. U nekim primerima prikazanim do sada, ovo je vec korisceno. Na primer, komanda 10x brise deset znakova desno od kurzora, 10dd brise 10 linija, i slicno.

Promenljive VI-aSlicno kao komandni interpreter, i VI poseduje neke ugradjene promenljive, koje ako su postavljene, menjaju ponasanje editora. Na sve promenljive ovog tipa se moze uticati :set komandom. Na primer: prebacuje VI u displej mod gde je, osim sadrzaja fajla, na pocetku prikazan i redni broj linija. Ovo moze biti od koristi jer masa komandi koristi redne brojeve linija kao argumente.

:set nu

:set nonu :set showmode :set noshowmode :set showmatch :set noshowmatch

je suprotno od :set nu na kraju zadnje linije ce se prikazivati trenutni mod rada editora (komandni ili insert). je suprotno od :set showmode editor ce pokazivati uparenost zagrada '(){}[]' sto je vrlo korisno u razvoju programa. je suprotno od :set showmatch

Komande za zapisivanje:i,jw file2 :w file2 :w>> file2 zapisuje tekst od i-te do j-te linije u file2 zapisuje ceo fajl pod drugim imenom file2 ceo sadrzaj zapisuje na kraj fajla file2

Prilagodjenje VI editora svojim potrebamaPrilagodjenje VI-a se obavlja vrlo jednostavno. Na HOME direktorijumu treba kreirati fajl .exrc i u njega uneti sve komande koje ce se izvrsiti inicijalno, nakon poziva editora. Na primer, ako .exrc ima sledeci sadrzaj::set showmode :set nu :set showmatch

nakon poziva, VI automatski ulazi u showmode, nu i showmatch mod.

Shell i programiranje shell-aUvodShell je komandni interpreter, tj. jos jedan sloj kojim je hardver racunara sakriven od korisnika.

Shell je korisnicki program kao i svaki drugi.

Shell kao komandni interpreter.

Shell kao skript interpreter.

Vrste shell-ova Bourne Shell C Shell Korn Shell Turbo C Shell /bin/sh /bin/csh /bin/ksh /bin/tcsh

Poredjenje osobina shell-ovaOsobina Kontrola toka Pracenje signala Restriktivni shell Opis Omogucuje kontrolu izvrsavanja scripta pomocu konstrukcija kao sto su petlje uslovne naredbe i sl. Mogucnost pracenja interrupt i drugih signala koje salje UNIX. U cilju povecanja sigurnosti sistema, nekim korisnicima se dodeljuje shell sa ogranicenim mogucnostima. Korisniku stoji na raspolaganju mogucnost da preimenuje neke komande ili da vise komande ujedini u jednu. Mogucnost da se vise podataka identifikuje istim imenom. Bourne Korn C Da Da Da Da Da Da Da Da Ne

alias komande nizovi istorija komandi Kompletiranje imena fajlova Integer aritmetika Kontrola posla Editovanje komandne linije

Ne Ne

Da Da Da Da Da Da Da

Da Da Da Da Da Da Ne

Mogucnost da se komande smestaju u bafer, kasnije Ne modifikuju i ponovo izvrsavaju. Mogucnost da se u komandnoj liniji automatski dovrsi ime zapocetog fajla. Mogucnost obavljanja aritmetickih operacija nad promenljivima u scriptu bez UNIX komandi. Mogucnost pracenja i pristupa poslovima koji se odvijaju u pozadini. Mogucnost da se prethodne ili tekuca komandna linija modifikuju tekst editorom. Ne Ne Ne Ne

C Shell kao komandni interpreter

Opsta sintaksa komandicommand_name arg1 arg2 ... < Enter >

command_name je naziv komande, izvrsnog programa ili ugradjene komande u sam shell. arg1, arg2, ... argumenti komande. Njima se specificiraju imena fajlova, direktorijuma, korisnika ili se zahtevaju neke opcione mogucnosti komande. Po konvenciji opcioni parametri pocinju sa "-".

Univerzalni znaci

? * . ..~

Zamenjuje samo jedan znak. Primer:% ls prim?.c prim1.cprim2.c

Zamena bilo kog stringa. Primer:% ls *.c prim1.c prim2.c primer.c

Skracenica za tekuci direktorijum. Primer:% cp /usr/include/*.h .

Skracenica za direktorijum hijerarhijski iznad tekuceg. Primer:% cp *.c ..

Skracenica za HOME direktorijum tekuceg korisnika. Primer:% cp *.c ~

~user[...]

Skracenica za HOME direktorijum korisnika sa login imenom user. Primer:% cp ~srle/*.* ~tanja

Zamenjuje se bilo koji znak iz zagrade. Primer:% ls srle[abc1].c srlea.c srlec.c srle1.c

[x-y]

Zamenjuje bilo koji znak u rangu od x do y. Primer:% ls srle[a-g].c srleb.c srled.c

{ string..} % ls { x *y* ?z* } x myfile yourfile xza yza

Grupisanje. Primer:

Redirekcija

standardni ulaz (stdin, tastatura) standardni izlaz (stdout, monitor) dijagnosticki izlaz (stderr, monitor) Preusmerava standardni izlaz u file_name. Ako file_name postoji gubi se prethodni sadrzaj. Ovo se moze spreciti ako se setuje shell promenljiva noclobber (set noclobber). Primer:% cat file1 file2 > file3

> file_name

>! file_name

Forsirano preusmeravanje. Iako file_name postoji i setovana je promenljiva noclobber, vrsi se prepisivanje starog sadrzaja. Preusmeravanje standardnog izlaza i dijagnostickog izlaza. Primer:% rm -r nonexisting_dir >& /dev/null

>& file_name >&! file_name >> file_name

Forsirano preusmeravanje standardnog i dijagnostickog izlaza. Preusmeravanje standardnog izlaza u file_name. Zapis se dodaje vec postojecem sadrzaju datoteke file_name.

>>& file_name

Preusmeravanje standardnog i dijagnostickog izlaza u file_name. Stari sadrzaj se ne brise vec mu se dodaje novi. Forsirano preusmeravanje standardnog i dijagnostickog izlaza u file_name. Stari sadrzaj se ne brise. Pipelining. Standardni izlaz prethodne komande se usmerava na standardni ulaz naredne. Primer:% ps -ef | grep getty | more

>>&! file_name

cmd1 | cmd2 | cmd3

(cmd1; cmd2;... )

Grupisane komande. C shell ovu grupu tretira kao jednu celinu. Usmeravanje standardnog i dijagnostickog izlaza grupe komandi u datoteku file_name. Primer:% (ls -l; ls -a; ls -s) >& listings

(... ) >& file_name

< file_name

Preusmeravanje standardnog ulaza iz fajla file_name. Primer:% mail < pismo

command

Nastavljanje komande u vise redova. Primer: \% cat *.* \ < Enter > grep "srle" | \ < Enter > more < Enter >

Specijalni znaci i navodnice\ Sprecava specijalno znacenje narednog znaka. Primer - brisanje fajla ime":% rm ime\"

C shell tretira uokvireni tekst kao jednu rec. Primer: ' ... 'p: echo $1 % p srle tanja srle % p 'srle tanja' srle tanja

" ... "

Uokvireni tekst se tretira kao jedna rec ali se ! i $ uvazavaju. Primer:% echo '$home $cwd'

$home $cwd % echo "$home $cwd" /usr/people/srle /tmp `command`

Zamena komande sa rezultatom. Primer:% rm `find / -name core -print` % find / -name core -exec rm '{}' ';'

Kontrola poslova& < Ctrl > Z bg [%job] Izvrsavanje komande u pozadini (background). Primer:% du > zauzece &

Privremeno zaustavljanje procesa Komanda za prebacivanje procesa u pozadinu. Ako nema argumenata prebacuje se tekuci posao (zadnje prekinuti). Primer:% infinite < Ctrl > Z % bg

fg [%job] stop [%job] < Ctrl > C

Komanda za prebacivanje procesa iz pozadine napred (foreground). Primer:% infinite & % fg %infinite

Prekida proces koji se izvrsava u pozadini. Primer:% stop %infinite

Prekidanje tekuceg procesa.

History mehanizam!! !n !-n !string !?string? !n* !n^ !n$ !i:j Prethodna komanda. Primer:% !! < Enter>

Izvrsava ponovo prethodnu komandu. Komandna linija broj n. Broj n se moze otkriti sa history. Komandna linija sa brojem za n manji od tekuceg. Zadnja komandna linija koja pocinje sa string. Primer:% cc proba.c pr.c obj.o -o proba -lm .... % !cc

Zadnja komandna linija koja sadrzi string. Svi argumenti n-te komandne linije. Ako se ne zada n podrazumeva se prethodna linija. Primer:% cc proba.o pr.o obj.o -o proba % rm !*

Prvi argument n-te komandne linije. Zadnji argument n-te komandne linije. j-ti argument i-te komandne linije

^str1^str2 !n:s/str1/str2/

U zadnjoj komandi zameni str1 sa str2. U n-toj komandnoj liniji zameni str1 sa str2.

C shell kao script interpreter

Proces kreiranja i izvrsavanja C shell script-a

Uz pomoc VI (ili nekog drugog tekst editora) formira se script. Ako prva linija pocinje sa # onda je C shell script. U suprotnom, script se tretira kao Bourne shell script. izvrsiti:

/bin/csh [-vx] script_name args ... -v ispisuje linije skripta koje se izvrsavaju -x ispisuje komande koje se izvrsavaju ili:% chmod +x script_name % script_name args ...

Argumenti komandne linijeArgumenti iz komandne linije se prenose u script i preko promenljive argv. Primer:echo $argv echo $argv[2]

Ekvivalentno:echo $* echo $2

PromenljivePostoji samo jedan tip: polje reci (stringova) Dodeljivanje vrednosti promenljivoj: set var_name set var_name=value set var_name=($=||

Istinito ako levi string ne odgovara stringu sa desne strane. Univerzalni znaci su i ovde dozvoljeni($file !~ *.c).

Istinito ako je broj sa leve strane manji od desnog. Istinito ako je broj sa leve strane manji ili jednak broju sa desne strane. Istinito ako je broj sa leve strane veci od desnog. Istinito ako je broj sa leve strane veci ili jednak broju sa desne strane. Logicko ili. Logicko i. Istinito ako je komanda uspesno zavrsena.

&& { command }

Kontrolne struktureIFif (izraz) then commands endif if (izraz) then commands else if (izraz) then commands else commands endif

Provera fajlova:if ( -c filename) then ....

gde je -c : -r -w -x -e -o Istinito ako korisnik koji izvrsava script moze da cita fajl. Istinito ako korisnik koji izvrsava script moze da pise u fajl. Istinito ako korisnik koji izvrsava script moze da izvrsava fajl. Istinito ako fajl postoji. Istinito ako je korisnik koji izvrsava script vlasnik fajla.

-z -d

Istinito ako je fajl prazan. Istinito ako je direktorijum.

SWITCHswitch ( $var ) case str1: commands breaksw ... case strn: commands breaksw default: commands breaksw endsw switch( $1 ) case -p: lp $2 breaksw case -c: cc -c $2 breaksw case -l: cc $2 breaksw endsw

FOREACHforeach var_name ( wordlist ) foreach arg ($*) commands echo $arg end end

WHILEwhile ( izraz ) commands end set i=1 set j=10 while($i D sa terminala. Sprecava se nezeljeni logout. Lista fajlova gde shell proverava da li je pristigla posta. Ako je prva rec u mail broj onda je to interval (u sekundama) na koliko se proverava pristizanje poste. lista direktorijuma gde shell trazi komande.

noclobber Ako je setovana nije dozvoljeno prepisivanje fajlova redirekcijom. path

prompt

String koji se pojavljuje na monitoru kada je shell spreman da primi narednu komandu. ! se zamenjuje rednim brojem komandne linije. Obicno se postavlja na sledecu vrednost:set prompt="`hostname`\!% "

filec

Ako je setovana, ukljuceno je kompletiranje imena fajlova i drektorijuma. Otkucaju se samo prvih nekoliko znakova, dovoljnih da jednoznacno asociraju na zeljeni fajl, a zatim se pritisne < Esc > taster. Shell ce sam kompletirati ime fajla.

Start-up fajlovi C shell-aDva fajla, koja u stvari predstatvljaju shell skriptove, se izvrsavaju u toku login procedure. To su .login i .cshrc i oba se nalaze na HOME direktorijumu korisnika. Prvi se izvrsava iz login programa koji obavlja autorizaciju korisnika (provera login imena i passworda). Ako je autorizacija obavljena uspesno, sam login program startuje shell korisnika. Slicno, kao login, shell izvrsava svoj start-up fajl. Start-up fajl C shell-a je .cshrc. Oba pomenuta start-up fajla sluze za inicijalno automatsko izvrsavanje odredjenih komandi, definisanje aliasa, promenljivih radne okoline, i slicno. Razlika izmedju .login i .cshrc fajla je ta sto se .login izvrsava prvi i to pre startovanja shell-a, ali to obicno nije znacajno. Ipak, korisniku se preporucuje dodavanje svojih definicija u .cshrc fajl. Tipican sadrzaj .cshrc fajla:# Definicija aliasa # alias ls "ls -CF" alias ll "ls -al" alias la "ls -a alias hi "history" alias xdvi "xdvi -geometry 730x860+30-1 -s 4 -paper a4" alias snns "snns -mono" # # Definisanje promenljivih shell-a # set history=40 set filec set prompt="`hostname` \!% " set path=($path /usr/TeX/bin ~srle/bin /usr/local/spice/bin) # # Promenljive okoline # setenv SPICE_LIB_DIR /usr/local/spice/lib # # Ostalo # umask 077

Racunarske mreze i mrezni servisiPrednost umrezavanjaRazvoj racunarskim mreza je poceo odprilike kada i razvoj UNIX operativnog sistema pocetkom sedamdesetih godina. Cilj umrezavanja komunikacione opereme jeste formiranje jednog virtualnog radnog okruzenja unutar koga bi uredjaji razlicitih proizvodjaca delili svoje resurse (procesnu snagu, skupe periferije kao sto su stampaci, ploteri, diskovi i slicno). Pri tome, takvo okruzenje treba da je transparentno tako da korisnih sto manje primecuje njegovo postojanje uz, naravno, puno koriscenje pogodnosti koje ono pruza. Kao primer, na slici 7 je prikazana jedna racunarska mreza sa relativno jednostavnom arhitekturom.

Slika 7: Primer racunarske mreze

Ova racunarska mreza povezuje tri racunara oznacenih kao host A, host B i host C. Za svaki od njih je povezana neka periferija, za host A je vezan ploter, za host C stampac dok je za host B vezano dva terminala. Svaki racunar moze biti sa ili bez konzole koja, naravno, moze biti i graficka sto je u novije vreme sve cesci slucaj. Odgovarajucim interfejsima oni su povezani u jedinstveno mrezno okruzenje. Pokazimo sada ukratko sta ovakva struktura moze ponuditi kao prednost u odnosu na stanje kada racunari nisu povezani. Tri vrste servisa je vrlo lako ostvariti u ovakvom okruzenju i to: virtualne terminalske sesije, transfer fajlova kao i razmenu elektronske poste. Ova tri servisa imaju poseban znacaj u razvoju racunarskih mreza jer su prve mreze projektovane upravo sa ciljem njihovog obezbedjivanja.

Virtualne terminalske sesijePretpostavimo da neki od korisnika radi na jednom od terminala vezanih za racunar host B. Bez mreznog okruzenja, on je ogranicen na koriscenje resursa samo pomenutog racunara. U mreznom okruzenju korisnik je u stanju da se prijavi i radi na bilo kom sistemu u mrezi, recimo na racunaru host C, bez obzira sto je njegov terminal vezan za racunar host B. Pri tome, terminal korisnika postaje virtualni terminal racunara host C. Naravno, virtualnu terminalsku sesiju je moguce ostvariti i sa konzola racunara. Krace receno, prostorni polozaj radnih mesta postaje nebitan. Za racunare u mrezi je odomacen izraz host. Prvi host na koji se korisnik loginuje da bi radio u mrezi se naziva lokalnim hostom dok host sa kojim je ostvarena virtualna terminalska sesija, ili pruza neku drugu mreznu uslugu, predstavlja remote host.

Transfer fajlovaOvaj servis obezbedjuje prenos podataka sa jednog racunara u mrezi na drugi. Pri tome se kao fizicki medijum koristi mreza a ne neki od prenosnih magnetnih medijuma (trake, diskete, diskovi), sto je uobicajeno u okruzenju bez mreze. Ovo znacajno smanjuje probleme prenosa podataka narocito izmedju racunara razlicitih proizvodjaca kada su formati zapisa na magnetne medijume nekompatibilni, sto je uobicajeni slucaj.

Razmena elektronske posteO razmeni elektronske poste je vec bilo reci ranije. Ovde cemo samo istaci dodatne mogucnosti koje mrezno okruzenje omogucava. Jedan racunar koji nije vezan u mrezu moze obezbediti samo komunikaciju izmedju njegovih korisnika dok je u mreznom okruzenju takva komunikacija moguca i sa korisnicima drugih racunara u mrezi.

U sva tri slucaja, kao posebnu prednost, treba istaci cinjenicu da savremena komunikaciona oprema omogucuje povezivanje racunara sa vrlo udaljenih lokacija. Dakle, u mreznom okruzenju je moguce organizovati terminalske sesije, prenos podataka i razmenu elektronske poste izmedju racunara koji su medjusobno udaljeni vise stotina (pa i hiljada) kilometara. Naravno, pomenuti servisi nisu sve sto danasnje savremene racunarske mreze nude. Sa vremenom se povecavala procesna moc siroko raspolozivih racunara, propusni kapacitet komunikacionih medijuma je takodje rastao pa su samim tim rasle i zelje korisnika a proizvodjaci mreznog softvera i opreme su se trudili da tim zeljama udovolje. Tako su nastali servisi koji se mogu svrstati u nekoliko sledecih klasa: deljenje resursa, organizacija diskless radnih stanica, distribuirane baze podataka, distribuirana obrada podataka i graficke mrezne aplikacije.

Deljenje resursaZa normalan rad na racunaru postoji potreba za nizom perifernih jedinica kao sto su stampaci, ploteri, diskovi, jedinice trake i tako dalje, a cija cena nije zanemarljiva. Zato je neekonomicno resenje koje svakom racunaru dodeljuje po jedan skup ovih periferija narocito ako se ima u vidu da koriscenje pojedinih periferija ovog tipa nije intenzivno. Mrezno okruzenje omogucuje deljenje ovakvih resursa sto znacajno smanjuje potrebne investicije a ujedno ne umanjuje komoditet rada u odnosu na slucaj kada je svaki racunar opremljen potrebnim perifernim jedinicama. Ako se vratimo na mrezu sa slike 7, ovo znaci da je stampanje ili crtanje na ploteru moguce sprovesti sa bilo kog racunara ove mreze a ne samo sa onih za koje su ove jedinice fizicki vezane. Za jedinice koje su mrezno raspolozive obicno se koriste termini: mrezni stampac, mrezni ploter, mrezna traka, i slicno. Ovde je posebno interesantan servis koji omogucuje deljenje fajl sistema, to jest diskova. Ovaj servis obezbedjuje da se deo fajl sistema jednog racunara vidi kao deo lokalnog fajl sistema drugog racunara u mrezi. Na primer, deo diska racunara host A sa slike 7 je moguce vezati kao deo lokalnog fajl sistema racunara host B i da u tretmanu, gledano sa korisnicke strane na racunaru host B, izmedju ova dva dela fajl sistema ne postoji nikakva razlika. Slicno kao i ranije, disk koji je mrezno raspoloziv se naziva mreznim a racunari koji nude svoje resurse serverima.

Diskless radne staniceDa bi jedan racunar bio operativan on mora, po ukljucenju, da obavi boot proceduru koja je deo procedure startovanja sistema. U okviru boot faze, operativni sistem koji se obicno nalazi na disku se ucitava u radnu memoriju i startuje se njegovo izvrsavanje. Naizgled, racunar mora da poseduje disk da bi uopste mogao da funkcionise. Medjutim, situacija nije takva. U mreznom okruzenju, ucitavanje operativnog sistema se moze obaviti sa nekog od mreznih diskova sto znaci da jedan sistem moze funkcionisati i bez posedovanja disk jedinica. Ovakvi racunari se nazivaju diskless iz ociglednih razloga. Funkcionisanje sistema nakon boot faze takodje zahteva postojanje fajl sistema. Fajl sistem diskless racunara se takodje organizuje kao deo nekog mreznog diska.

Imajuci u vidu da cena disk jedinica na trzistu opada, napori da se postigne usteda na ovaj nacin prestaju da budu od znacaja tako da se diskless radne stanice sve redje srecu u upotrebi.

Distribuirane baze podatakaMrezno okruzenje je omogucilo i radikalnu promenu u organizovanju baza podataka razlicitih tipova. Vrlo je cest slucaj da su podaci od interesa uglavnom znacajni za odredjeni prostor i da se povremeno pojavljuje potreba za pretrazivanjem baza vezanih za druge prostorne oblasi. Ovakvi problemi se resavaju tako sto se baza distribuira na vise racunara od kojih svaki cuva podatke lokalnog karaktera i postaje server za to podrucje. Svi serveri se vezuju u racunarsku mrezu i obicno su fizicki locirani u oblast koju predstavljaju. Pretrazivanje i upiti koji se odnose na podatke vezane za lokalno podrucje stizu i zavrsavaju se na lokalnom serveru dok se oni drugi, koji su redji, obavljaju razmenom podataka izmedju servera razlicitih oblasti. Na ovaj nacin je pre svega postignuta decentralizacija azuriranja baza sto znacajno doprinosi valjanosti podataka koji se nalaze u njoj. Ovo je narocito znacajno ako se radi o velikim bazama podataka kao sto su, na primer, baze na nivou cele zemlje.

Distribuirana obrada podatakaPostoji citav niz prakticnih problema koji zahtevaju intenzivna izracunavanja pa je njihovo resavanje samim tim vrlo sporo. Jedan od nacina ubrzanja resavanja ovakvih problema jeste paralelizacija, to jest njihovo resavanje uz pomoc viseprocesorskih sistema. Viseprocesorski sistemi jesu raspolozivi na trzistu ali je njihova cena jos uvek visoka. Kompromisno resenje se moze postici angazovanjem vise racunara koji su povezani u mrezu. Ideja se sastoji u tretiranju pojedinih racunara kao procesora jedne jedinstvene virutalne paralelne masine. Problem od interesa se izdeli na manje poslove koji se mogu odvijati paralelno i svaki od njih se dodeli jednom racunaru dok se mreza koristi kao medijum za razmenu podataka izmedju racunara, odnosno, virtualnih procesora.

Graficke mrezne aplikacijeAplikacije ovog tipa se mogu posmatrati i kao generalizacija virtualnih terminalskih sesija. Kako je napomenuto, racunari u mrezi obicno poseduju graficke konzole ili su na njih vezani graficki terminali. Mrezno okruzenje moze obezbediti da graficka konzola ili terminal jednog racunara postane virtualni graficki terminal bilo kog racunara u mrezi tako da se rezultati grafickog oblika prikazuju na terminalu korisnika bez obzira sto aplikacija koja prikazuje te rezultate radi na fizicki udaljenom racunaru.

Standardizacija mreznih komunikacija

Da bi racunarska oprema razlicitih proizvodjaca mogla biti povezana u jedinstveno mrezno okruzenje bilo je neophodno izvrsiti standardizaciju procedura, to jest protokola po kojima ce se komunikacija odvijati. Godine 1977. ISO je zapoceo rad na standardima ovog tipa a kao rezultat takve aktivnosti nastalo je stotinak protokola koji bi trebali biti medjunarodno prihvaceni. Skup ovih protokola cine OSI (Open System Interconnection) referentni model. Istovremeno, DOD (Department of Defence) u SAD razvija skup standarda, poznatih kao TCP/IP model, i na njima zasniva svoju racunarsku mrezu. Kasnije je, u malo izmenjenoj formi, ovaj model prihvacen kao IEEE standard. Inace, skracenice TCP i IP poticu od Transport Control Protocol i Internet Protocol, respektivno. I u jednom i u drugom modelu, proces kominiciranja je, sa stanovista bilo kog komunikacionog uredjaja, posmatran kao slojevita struktura poslova koji se sekvencijalno odvijaju redosledom koji zavisi od smera protoka informacija, kako je to prikazano na slici 8. S obzirom da se podposlovi procesa kominiciranja odvijaju sekvencijalno, razmena podataka, to jest interna komunikacija je moguca samo ismedju susednih slojeva. Standardizacija se svodi na propisivanje skupa protokola za svaki sloj modela koji moraju biti ispostovani od strane svih proizvodjaca mrezne opreme.

Slika 8: Odnos OSI i TCP/IP modela Da bi ovo pojasnili, slikom 9 cemo ilustrovati nacin komuniciranja dva racunara u mrezi (host A i host B) po TCP/IP modelu. Pretpostavimo da postoji potreba da host A posalje paket podataka do racunara host B. Paket podataka se prvo predaje aplikacionom nivou hosta A. Primeljeni paket se na ovom nivou dogradjuje dodatnim podacima (oznaceni sa AH na slici 9) koji ce posluziti istom nivou hosta B, recimo, da detektuje kom procesu su ti podaci namenjeni. Novonastali paket se dalje predaje sledecem, to jest transportnom nivou. Formiranje paketa se nadalje nastavlja po istom principu sve do fizickog nivoa. Paket koji datalink nivo predaje fizickom nivou, pored polaznih podataka, sadrzi i sve relevantne podatke potrebne da se komunikacija sa hostom B ostvari. Takvi su na primer podaci o procesu hosta A koji salje podatke, adresa hosta A, adresa ciljnog, to jest hosta B kao i podaci o procesu hosta B kome je paket upucen. Ovako formirani paket se na fizickom nivou konvertuje u elektricni signal koji se fizickim medijumom prenosi do racunara host B. Na

prijemnoj strani, proces prenosa podataka je obrnut tako da aplikacioni nivo hosta B predaje ciljnom procesu originalni paket. Napomenimo i to da se fizicki nivo realizuje hardverski, to jest mreznim interfejsima, dok se ostali slojevi modela realizuju softverski, cine mrezni softver racunara, a vecina njih je ugradjeno u sam kernel operativnog sistema.

Slika 9: Komunikacija dva racunara kroz mrezu TCP/IP se, kako se sa slike 8 vidi, razlikuje od OSI modela. U gruboj aproksimaciji se moze reci da se ova dva modela poklapaju do transportnog nivoa. Standardizacija iznad ovog nivoa u TCP/IP modelu je prepustena timovima koji razvijaju mrezne aplikacije, dok to nije slucaj sa OSI modelom. U literaturi se cesto nailazi na dilemu da li je TCP/IP po OSI modelu ili ne? Moze se rec