Documente Academic
Documente Profesional
Documente Cultură
Manual UNIX
Manual UNIX
ca un sistem robust, fiabil, portabil, capabil s ruleze pe cele mai variate arhitecturi hardware. Conform opiniilor specialitilor n domeniu, UNIX reprezint sistemul de operare original. De fapt, Microsoft Windows i MacOS (sistemul de operare ce ruleaz pe Macintosh) au fost iniial dezvoltate ca alternative la UNIX i nu invers. Cu toate c majoritatea PC-urilor actuale utilizeaz Windows, n ultimul timp se observ o tendin din ce n ce mai puternic spre utilizarea Linux-ului (care nu este altceva dect o variant de UNIX) care are un mare avantaj: este gratis! De asemenea, ultimele tipuri de interfee grafice precum CDE (Common Desktop Environment), GNOME, KDE faciliteaz folosirea UNIX-ului pentru utilizatorii care nu sunt specialiti n domeniul calculatoarelor. Pe de alt parte, cunotinele legate de UNIX pot reprezenta o avere deosebit n lumea de astzi a tehnologiei informaiei. Multe dintre cele mai puternice reele din lume i site-uri Internet sunt bazate pe UNIX, existnd o cerere deosebit pentru profesioniti specializai n administrarea sistemelor UNIX. Aceti administratori de sisteme (cunoscui i sub denumirea de sysadmin) sunt printre cei mai bine pltii oameni din domeniul IT. n primul capitol al lucrrii de fa sunt prezentate caracteristicile generale ale sistemului de operare UNIX, istoric, tipuri de implementri, documentare, comenzi i interfee grafice. n capitolul al doilea sunt prezentate noiuni legate de sistemul de fiiere UNIX precum i comenzi referitoare la fiiere i directoare. Capitolul al treilea se refer la administrarea fiierelor, comenzi legate de partiii i hard-disc-uri, cutarea i sortarea fiierelor, arhivarea i compresia fiierelor. n capitolul al patrulea sunt prezentate serviciile de reea oferite n UNIX, serviciile ARPA precum i posibilitatea integrrii cu alte sisteme de operare. Capitolul al cincilea face referire la editoare de texte utilizate pe sisteme UNIX; sunt prezentate aici editorul vi i editorul pico. n capitolul al aselea sunt prezentate noiuni generale legate de shell-uri UNIX, variante, procese UNIX i mediul de lucru.
Capitolele apte i opt se refer la variantele Bourne Shell (sh), respectiv Bourne Again Shell (bash). Aici sunt prezentate: gramatica Shell, tipuri de operatori, mediul Shell, comenzi, funcii, toate acestea nsoite de numeroase exemple. Obiectivul urmrit prin scrierea acestei lucrri a fost acela de a face o introducere n lumea UNIX prezentnd caracteristicile fundamentale i facilitile acestui sistem de operare precum i acela de a oferi numeroase exemple de utilizare a programelor de tip shell-script, cu accent pe shell-ul Bourne i shell-ul Bourne Again. Lucrarea se adreseaz n special studenilor ce studiaz sistemul de operare UNIX n cadrul activitilor de curs, seminar sau laborator, iar exemplele prezentate n carte constituie o bogat surs de inspiraie pentru acetia. Autorul
1.1 Introducere Sistemul de operare UNIX, mpreun cu suita de protocoale TCP/IP pentru comunicaia n reea i cu sistemul de fiiere NFS constituie o soluie convenabil pentru constituirea unui sistem complet de operare n reea. Dezvoltat iniial n laboratoarele AT&T Bell Labs (cu participarea companiei General Electric i a faimosului MIT Massachusetts Institute of Technology), UNIX-ul reprezint, de fapt, o mare familie de sisteme de operare nrudite ce descind din munca programatorilor Dennis Ritchie i Ken Thompson (creatorii limbajului C) la sfritul anilor 60 i nceputul anilor 70. Sistemele din familia UNIX pot fi rulate pe orice tip de calculator, plecnd de la calculatoarele personale pn la super-calculatoarele cu configuraii extrem de avansate, utilizate ndeosebi n domeniul militar i cel bancar. De asemenea, toate variantele de UNIX sunt multitasking, domeniu n care UNIX are o reputaie deosebit. Numele su deriv de la un jos de cuvinte al unui alt proiect Bell Labs/MIT din acelai timp produs pe un calculator mainframe cunoscut sub numele de Multics (Multiplexed Information and Computing Service). Sistemul de operare interactiv Multics fusese scris pentru un computer al companiei General Electric dovedindu-se dup ani de dezvoltare mult prea costisitor, de aceea Bell Labs s-a retras ulterior din proiect. n timpul lucrului la proiectul Multics, programatorul Ken Thompson a scris un joc de cltorie n spaiu pentru computerul General Electric. Dup sistarea proiectului, acesta a rescris jocul mpreun
Prin multitasking se nelege capacitatea unui sistem de operare de a executa mai multe procese (task-uri) simultan. Acest lucru se realizeaz prin fenomenul time slicing ce presupune c fiecare proces aflat n execuie utilizeaz calculatorul pentru o perioad determinat de timp. Comportamentul multitasking este n opoziie cu task switching, caz n care fiecare proces aflat n execuie trebuie s se termine pentru a se ncepe execuia unui nou proces.
UNIX
cu colegul su Dennis Ritchie pentru a rula pe un computer DEC PDP-7 ce avea un display grafic mai performant. Acest calculator avea nevoie ns de un sistem de operare viabil. Iniial, noul sistem de operare a fost numit de ctre Thompson UNICS (Uniplexed Information and Computing Service), apoi numele su s-a schimbat n UNIX iar jocul de cltorie spaial a fost modificat pentru a rula sub UNIX. Cu toate mbuntirile aduse de-a lungul timpurilor, de la primele implementri de UNIX i pn acum, toate variaiile sale urmresc ntr-o mare msur arhitectura i funcionalitatea original UNIX. 1.2 Scurt istoric Pentru a nelege mai bine caracteristicile acestui sistem de operare, avantajele i dezavantajele sale, este util s cunoatem cteva lucruri legate de istoria sa. Dup cum am spus mai nainte, UNIX a fost conceput iniial la Bell Laboratories USA drept un proiect privat de cercetare, proiect nceput n 1969 de ctre un mic colectiv de cercettori. Scopul acestui colectiv de cercetare era acela de a concepe un sistem de operare care s corespund urmtoarelor exigene: s fie elegant, simplu i concis; s fie scris ntr-un limbaj de programare de nivel nalt i nu n limbaj de asamblare; s permit refolosirea codului. La nceput, UNIX a fost scris n limbaj de asamblare i de aceea nu putea rula dect pe un calculator anume. Odat cu naterea limbajului C n 1971, Ritchie i Thompson au rescris n 1973 programele de sistem UNIX n C. n acest fel UNIX-ul putea fi mutat (portat) i pe alte calculatoare fr un efort prea mare de programare. n aceeai perioad, compania AT&T (firm mam pentru Bell Laboratories) a fost declarat monopol de Comisia Federal de Comer a SUA. Drept compensaie, Bell Laboratories a oferit gratis sistemul de operare UNIX universitilor din SUA, astfel nct acesta a devenit extrem de popular n mediul academic. Cu timpul, UNIX s-a rspndit i n mediul comercial, n care studenii aplicau ceea ce au nvat pe bncile universitilor. Spre deosebire de majoritatea productorilor de sisteme de operare din acel timp, care produceau sisteme mari i scrise n limbaj de asamblare, UNIX avea un mic procent de cod scris n limbaj de asamblare (aproximativ 10% - kernelul), n timp ce restul codului era scris n C. Grupul de dezvoltare a sistemului a conceput iniial munca n limbaj de nivel nalt,
apoi, odat cu dezvoltarea sa, au aprut mici schimbri ce au fost fcute n kernel i n limbajul de programare pentru a se definitiva UNIX-ul. n cadrul acestei evoluii continue, kernelul i software-ul aferent au fost extinse pn cnd s-a creat un sistem de operare scris n C, bazat pe kernelul n limbaj de asamblare. Codul surs al sistemului de operare UNIX a fost fcut public i disponibil universitilor de pe ntreg teritoriul SUA. Programatorii de la Universitatea Berkeley din California au fcut modificri substaniale codului surs original i astfel s-a nscut BSD (Berkeley Software Distribution) UNIX. Aceast nou versiune de UNIX a fost fcut cunoscut la rndul ei programatorilor din SUA care au adugat instrumente i cod. Cea mai important mbuntire adus sistemului de operare de ctre programatorii de la Berkeley a fost adugarea software-ului de reea ce a permis sistemului de operare s funcioneze ntr-o reea local. Varianta BSD UNIX a devenit extrem de popular printre productorii de computere, dintre care: Hewlett Packard, Digital Equipment Corporation i Sun Microsystems. Scurt istoric al sistemului de operare UNIX
Tabelul 1.1
1969 nceputul dezvoltrii a ceea ce urma s devin UNIX de ctre programatorii Ken Thompson i Dennis Ritchie la Bell Laboratories. 1973 UNIX este rescris n C pentru a fi portabil i a putea rula pe diverse computere. 1975 Se distribuie versiunea 6 n afara laboratoarelor Bell; prima versiune BSD deriv din aceast versiune V6. 1980 Microsoft produce Xenix iar BSD 4.2 este larg utilizat. 1984 Universitatea Berkeley din California distribuie versiunea 4.2 BSD ce include suita de protocoale TCP/IP pentru reea i alte programe aplicative. 1984 Apare versiunea SVR2 (System V Release 2); exist aproximativ 100.000 de instalri de UNIX n ntreaga lume. 1986 Apare versiunea 4.3BSD ce include internet name server. 1987 Apare versiunea SVR3; n acest moment exist aproximativ 750.000 de instalri de UNIX n ntreaga lume. 1988 Apare UNIX SVR4 prin unificarea versiunilor System V, BSD i Xenix. 1991 UNIX System Laboratories (USL) devine o companie n care acionar majoritar este AT&T; Linus Torvalds ncepe dezvoltarea Linux-ului. 1992 USL elaboreaz UNIX SVR4.2 iar Novell i anun intenia de a prelua USL. 1993 Apare versiunea 4.4BSD de la Berkeley. Novell preia USL. 1999 UNIX mplinete 30 de ani; kernel-ul Linux ajunge la versiunea 2.2. 2001 Versiunea 3 Single UNIX Specifications reunete eforturile POSIX, The Open Group i ale altor companii. Kernel-ul Linux ajunge la varianta 2.4 2003 Kernel-ul Linux ajunge la versiunea 2.5 2004 Se afl n lucru variante ale kernel-ului Linux versiunea 2.6
UNIX
n timp ce firma Sun Microsystems avea sistemul de operare SunOS bazat pe versiunea BSD UNIX 4.2, compania AT&T folosea o versiune de UNIX cunoscut sub numele de System V (system five). n anul 1988, SunOS/BSD, AT&T System V Release 3 i XENIX (o versiune de UNIX dezvoltat de Microsoft pentru PC-uri cu procesoare Intel) au fost combinate ntr-o nou versiune UNIX denumit System V Release 4 (SVR4). Aceast nou generaie a sistemului de operare UNIX a fost creat n scopul combinrii celor mai bune caracteristici din varianta BSD ct i din varianta AT&T System V pentru a crea un standard n industria sistemelor de operare. Acest lucru a permis dezvoltarea de software pentru UNIX indiferent c era vorba despre System V sau BSD 4.2. Noua variant SVR4 a devenit baza celor mai multe varieti de UNIX. n tabelul 1.1 regsim istoria de peste 30 de ani a sistemului de operare UNIX. 1.3 UNIX sistem de operare pentru reea Ca un vechi i adevrat sistem de operare pentru reea, UNIX ofer faciliti avansate n acest sens, printre care: Operare multi-utilizator Multitasking Procesare distribuit Nivel ridicat de securitate
Facilitatea de operare multi-utilizator permite accesul simultan la sistem pentru mai muli utilizatori ce pot astfel partaja aceleai resurse ale sistemului. Sistemul de operare are grij de fiecare resurs a computerului, fie c este vorba de memoria RAM, microprocesor, hard disk, scanner sau imprimant, permind partajarea fiecreia dintre acestea. Fiecare program aflat n execuie poart numele de proces sau task. Sistemul de operare UNIX ine evidena mai multor procese simultan aceast capacitate a sa este denumit multitasking. Acest fapt permite mai multor aplicaii s ruleze n acelai timp pe computer. De asemenea, capacitatea de procesare distribuit a sistemului de operare se refer la faptul c acesta permite utilizarea partajat a resurselor n cadrul reelei. Cel mai simplu exemplu n acest sens este acela n care un utilizator poate accesa fiiere i aplicaii de pe hard disk-ul altui computer situat n alt parte a reelei de calculatoare.
10
n fine, sistemele de operare pentru reea au implementate sisteme de securitate foarte sigure; exist multe alte faciliti de asigurare a securitii n afar de cea clasic nume-de-utilizator/parol. De regul, facilitile de asigurare a securitii sistemului pot fi active sau nu, n funcie de politicile de securitate implementate la nivelul companiei respective. 1.4 Arhitectura UNIX Sistemul de operare UNIX este un sistem de operare structurat n principal pe urmtoarele dou nivele: Programe sistem UNIX; Nucleul (denumit kernel) sistemului UNIX.
Majoritatea programelor sistem i kernel sunt scrise n C, permind portabilitatea pe alte platforme hardware ce posed un compilator C. Programele de sistem UNIX ofer funcionalitatea cerut de utilizatori prin iniierea unui sistem de apeluri ctre nucleul sistemului UNIX. Nucleul ndeplinete aceste cereri interacionnd cu nivelul hardware i returnnd rezultatele scontate utilitarelor i programelor sistem. n aceast arhitectur stratificat, doar nucleul UNIX trebuie s se ocupe de echipamentele hardware specifice cu care trebuie s interacioneze; n interiorul nucleului majoritatea codului specific hardware se limiteaz la driverele echipamentelor. Nucleul reprezint centrul sistemului de operare i are rolul de a oferi funcionalitile de baz necesare funcionrii computerului. Nucleul este apropiat de microprocesor i hardware, fiind un fiier executabil ce este ncrcat n memorie atunci cnd are loc procesul de boot al calculatorului, fiind denumit generic unix (pe sistemele bazate pe System V) sau vmunix (pe sistemele bazate pe BSD). Odat cu ncrcarea n memorie, nucleul ncepe execuia urmtoarelor funcii: Administrarea echipamentelor, a memoriei i a proceselor; Asigur controlul funciilor de transmisie a informaiilor ntre programele de sistem i echipamentele hardware; Administreaz entiti precum spaiul de swap, demonii i sistemul de fiiere. Spaiul de swap reprezint o poriune special de pe hard-disc ce este folosit de ctre kernel pentru procesare. Buci ale programelor ce se afl n execuie pot fi interschimbate ntre memoria RAM i hard-disc ori de cte ori este nevoie. Acest mecanism de extindere a memoriei
11
UNIX
RAM a sistemului prin utilizarea spaiului de pe hard-disc poart denumirea de memorie virtual. Demonii sunt programe (sau procese) ce ndeplinesc un anumit rol; ei sunt procese speciale care i ncep execuia dup ncrcarea sistemului de operare n memorie. Dup aceea, demonii ateapt s ruleze anumite sarcini n sprijinul sistemului de operare, putnd fi pornii manual sau n mod automat. Un exemplu de proces demon este dtlogin care determin apariia ecranului de login CDE la nceputul unei sesiuni UNIX sau dup ce utilizatorul iese din File Manager-ul CDE. Procesele demon din lumea UNIX sunt similare cu serviciile (services) din Windows NT/2000/XP sau cu modulele NLM (Netware Loadable Modules) din sistemul de operare Novell Netware. Sistemele de fiiere reprezint modalitatea de organizare a directoarelor, subdirectoarelor, fiierelor pe hard-disc. Sistemele de fiiere pot fi situate att local (pe calculatorul local) ct i la distan (pe alt calculator din reea, de regul un aa numit server). Programele i utilitarele sistemului, precum i aplicaiile utilizatorilor sunt independente de hardware i singura cerin pentru acestea este s iniieze apeluri standardizate de sistem ctre nucleul UNIX. Cele mai multe dintre funciile nucleului UNIX se ocup de managementul fiierelor sau al anumitor tipuri de dispozitive. Pentru a simplifica i standardiza apelurile de sistem, UNIX interpreteaz echipamentele ca fiind tipuri speciale de fiiere. Poate cea mai important caracteristic a sistemului UNIX este aceea a disponibilitii codului surs, ceea ce permite multor programatori s mbunteasc i s modifice aceste sistem de operare de-a lungul anilor. Cele dou proprieti remarcabile ale sistemului de operare UNIX sunt: Portabilitatea aceasta se manifest n dou moduri: n primul rnd, UNIX este portabil pe numeroase platforme hardware; n al doilea rnd, programele scrise pentru UNIX sunt implicit portabile pe toate platformele UNIX, depinznd de nivelul de similaritate ntre nucleele i programele de sistem UNIX; Modularitatea UNIX este un sistem dinamic, a crui funcionalitate poate fi mbuntit prin adugarea de noi programe utilitare; de asemenea, este posibil i modificarea nucleului i recompilarea sa pentru un sistem de operare mai bun.
12
Arhitectura general i cele mai importante funcii ale nucleului UNIX sunt prezentate n figura 1.2.
1.5 Funcionaliti UNIX Dintre cele mai importante caracteristici funcionale ale sistemului de operare UNIX se disting urmtoarele: