Sunteți pe pagina 1din 39

Initiere in sistemul de operare Unix

CUPRINS 1. Scurt istoric al sistemului Unix 2 Structura generala a sistemului UNIX 2.1 Sistemul de Operare 2. 2 Sistemul de fisiere 2.3 Programe Unix 2.4 Conectarea la un sistem Unix 2.5 Comenzi Unix, redirectare 3. Sistemul de fisiere, comenzi 3.1 Tipuri de fisiere 3.2 Atributele fisierelor si directoarelor 4. Comenzi de baza Unix 4.1 Comanda cat 4. 2 Afisarea fisierelor pe pagini: more 4.3 Comparare de fisiere: cmp 4.4 Comparare fisiere ascii: diff 4.5 Determinarea tipului unui fisier: file 4.6 Listarea manualului unei comenzi: man 4.7 Listare variabile de environment: printenv 4.8 Listare stare procese, anularea unui proces: ps, kill 5. Limbajul de comanda Shell 5.1 Generalitati despre Bourne Shell 5.2. Proceduri si parametri 5.3 Structuri de control

Partea I

1. Scurt istoric al sistemului Unix


1965 Laboratoarele Bell din AT&T s-au asociat cu MIT(Massachusetts Institute of Technology) si GE(General Electric) in dezvoltarea unui nou sistem de operare Multics care ar fi furnizat facilitati de multi-user, multi-processor si fisiere sistem multi-level, printre multe alte functii. 1969 AT&T nemultumit de evolutie a stopat proiectul Multics. Cativa programatori de la BTL(Bell Telephone Laboratories) care au lucrat la acest proiect: Ken Thompson, Dennis Ritchie, Rudd Canaday si Doug McIlroy au proiectat si implementat prima versiune de Unix File System pe un calculator PDP-7 impreuna cu cateva utilitare. I s-a dat numele de UNIX de catre Brian Kernighan. 1970, 1 ianuarie time zero pentru UNIX 1971 Sistemul rula pe un calculator DEC PDP-11, cu 16 kbytes de memorie si disk de 512Kbytes. Primele utilizari reale au fost pentru procesare texte in cadrul departamentului de brevete de la Bell Labs justificandu-se astfel dezvoltarile ulterioare de catre grupul de programatori. 1973 Unix este rescris in cea mai mare parte in C, un nou limbaj de programare dezvoltat de Dennis Ritchie. Fiind scris in acest limbaj high-level au crescut posibilitatile de portabilitate ale sistemului pe noi calculatoare 1974 Thompson si Ritchie publica un articol in Communications of the ACM descriind noul sistem de operare Unix. Acesta a generat entuziasmul comunitatii Academice care a simtit marele potential in dezvoltarea programarii sistemelor. 1977 sunt aproximativ 500 de locatii cu sisteme Unix 1980 BSD 4.1 (Berkeley Software Development) 1983 SunOS, BSD 4.2, SysV 1984 Sunt aproximativ 100.000 locatii Unix ruland pe diferite platforme hardware 1988 AT&T si Sun Microsystems in cooperare dezvolta (SVR4).
2

System V Release 4

Initiere in sistemul de operare Unix

Petre Gologan SNTM

Acesta va fi dezvoltat in UnixWare si Solaris 2. 1990 Linux Linux este o versiune free de UNIX dezvoltat prima data de Linus Torvalds la Universitatea din Helsinki(Finlanda) cu ajutorul multor programatori de sistem UNIX. Software-ul disponibil pentru Linux a fost dezvoltat sub licenta GNU (General Public License) al Free Software Foundation din Cambridge, Massachusetts, U.S.A. Programatori din intreaga lume au contribuit si contribuie la dezvoltarea sistemului si a diverselor aplicatii Linux. 1993 Novell cumpara UNIX de la AT&T 1994 Novell da numele "UNIX" lui X/OPEN 1995 Santa Cruz Operations cumpara UnixWare de la Novell. Santa Cruz Operations si Hewlett-Packard anunta ca vor dezvolta o versiune de Unix pe 64 biti.

Sisteme UNIX Acum Unix este larg raspandit si este disponibil din multe surse free sau comerciale: SunOS/Solaris (Sun Microsystems); Digital Unix (Tru64) (Digital/Compaq); HP-UX (Hewlett Packard); Irix (SGI); UNICOS (Cray); NetBSD, FreeBSD (UC Berkeley / the Net); Linux (Linus Torvalds / the Net);

Initiere in sistemul de operare Unix

Petre Gologan SNTM

2 Structura generala a sistemului UNIX


2.1 Sistemul de Operare Un sistem de operare este programul care controleaza toate componentele unui calculator, atat hardware cat si software. Unix este un sistem de operare stratificat. Cel mai intern(mai de jos) strat este partea hardware care furnizeaza servicii pentru OS. Sistemul de operare UNIX are trei parti importante: kernel-ul, shell ul si sistemul de fisiere. Kernel Kernel-ul este inima fiecarui sistem UNUX si este incarcat atunci cand sistemul este startat boot-ul sistemului. El gestioneaza toate resursele sistemului de calcul interactionand direct cu hardware-ul si furnizand servicii catre programele utilizator. Operatii efectuate de kernel: Managementul proceselor: - crearea/distrugere proceselor si comunicarea intre procese; - planificarea si coordonarea proceselor; - managementul datelor de control procese; Managementul resurselor sistem: - memorie: alocarea spatiului de adrese,swapping, paging; - memoria secundara ( pe disk); - device-uri I/O; - fisiere; Intrari/Iesiri : - transferul datelor intre memorie si device-uri I/O; - gestionarea buferelor sistem; - alocarea de canale si device-uri I/O pentru procese; Manipularea intreruperilor: - terminarea proceselor; - terminarea operatiilor de I/O; - cereri de servicii; - erori software si hardware; Functiile realizate de kernel sunt in concordanta cu operatiile efectuate si pot fi sintetizate in: - gestionarea memoriei calculatorului si alocarea ei fiecarui proces; - gestionarea proceselor sistem; - gestionarea proceselor utilizatorilor; - gestionarea, planificarea si stabilirea prioritatii activitatii facute de CPU astfel incat activitatea fiecarui utilizator sa fie cat mai eficienta; - organizeaza transferul datelor, realoca intrari/iesiri proceselor; - acceptarea instructiunilor de la Shell si transportul lor; - gestionarea sistemelor de fisiere;
4

Initiere in sistemul de operare Unix

Petre Gologan SNTM

Functiile kernel sunt de doua tipuri: autonome si selective(responsive). Functii ca alocarea de memorie si CPU sunt realizate fara cerere explicita din partea procesului utilizator. Alte functii ca alocarea de resurse, crearea si gestionarea proceselor sunt initiate prin cereri de la proces. Programele utilizator interactioneaza cu kernel-ul prin intermediul unui set standard numit system calls. Aceste system calls cheama servicii care sa fie furnizate de kernel. Exista urmatoarele 3 categorii de apeluri system: - system calls pentru manipulare fisiere: create, open, read, write, close, unlink, trun; - system calls pentru control proces: fork, exec, wait, kill; - system calls pentru manipulare informatii: getpid, getgid, gethostname; Sistemul de operare Unix este un sistem multi-user, multi-tasking. Putem avea mai multi utilizatori conectati la sistem simultan, fiecare ruland mai multe programe. Notiunea de proces Un proces numit uneori si job sau task, este un program in executie. O singura copie a unui program in memorie poate fi utilizata de mai multe procese. Un proces se poate multiplica prin intermediul apelului de sistem fork rezultand un proces numit child a carui imagine difera de procesul parent printr-un numar unic de identificare (PID). Sistemul de operare creaza o structura de date numita Process Control Block(PCB) care include PID-ul, ID-ul procesului parinte(PPID), informatii despre stare proces(registri si stive) precum si informatii de control proces. Procesele sistem sunt pornite de kernel. Procesele utilizator dialogheaza cu exteriorul prin trei fisiere speciale care sunt deschise permanenet: - intrare standard (standard input, 0); - iesire standard (standard output, 1); - iesire de erori standard (standard error output, 2); Un proces poate lua urmatorele stari: - activ (runnable) --> R; - in asteptare(sleeping) --> S; - oprit (traced or stopped) --> T - terminat, dar elementele procesului raman vizibile(zombie) --> Z; Sarcina kernel-ului este si aceea de a pastra fiecare proces si user separat si de a gestiona accesul la sistemul hardware(cpu, memorie, disk si alte device-uri I/O).

Initiere in sistemul de operare Unix

Petre Gologan SNTM

O cale prin care procesele comunica unul cu altul si cu kernel-ul este prin intermediul semnalelor(signals). Semnalele sunt diverse notificari trimise procesului in scopul de a notifica diverse evenimente externe neasteptate si importante. Fiecare semnal are asociat un numar intreg(1,2) si un nume simbolic(definit in /usr/include/signal.h). Comanda kill l ne va arata lista cu semnalele suportate de sistem.
1) SIGHUP 5) SIGTRAP 9) SIGKILL 13) SIGPIPE 18) SIGCONT 22) SIGTTOU 26) SIGVTALRM 30) SIGPWR 2) SIGINT 6) SIGABRT 10) SIGUSR1 14) SIGALRM 19) SIGSTOP 23) SIGURG 27) SIGPROF 31) SIGSYS 3) SIGQUIT 7) SIGBUS 11) SIGSEGV 15) SIGTERM 20) SIGTSTP 24) SIGXCPU 28) SIGWINCH 4) SIGILL 8) SIGFPE 12) SIGUSR2 17) SIGCHLD 21) SIGTTIN 25) SIGXFSZ 29) SIGIO

Initiere in sistemul de operare Unix

Petre Gologan SNTM

Exemplu: SEGV( segmentation violation) - este trimis de kernel daca utilizatorul incearca su acceseze ilegal memoria. Dupa primirea acestui mesaj, procesul se va termina. Un mod de a trimite semnale procesului este prin intermediul tastaturii. Sunt cateva taste care sunt interpretate de sistem ca cereri de a trimite semnale catre procesele cu care interactionam: Ctrl-C Sistemul trimite un semnal INT(SIGINT) catre procesul in executie. Acest semnal are ca urmare terminarea imediata a procesului. Ctrl-Z Sistemul trimite un semnal TSTP(SIGTSTP) catre procesul in executie si are ca rezultat suspendarea executiei. Ctrl-\ Sistemul trimite un semnal ABRT(SIGABRT) catre procesul in executie. Are acelasi efect cu Ctrl-C. Alt mod de a trimite semnale catre procese este prin comenzi: kill Comanda kill accepta 2 parametri: un nume de semnal(sau numar) si identificatorul procesului(PID): kill -<semnal> <PID> Exp. kill INT 2346 kill 2 2346 == CTRL-C
fg

Aceasta comanda reia executia unui proces care a fost suspendat cu Ctrl-Z prin trimiterea unui semnal CONT. Gestionarea memoriei Sistemul UNIX ruleaza in memoria virtuala, ceea ce permite executia unor procese care cer un spatiu de memorie mai mare decat cel al memoriei fizice instalate. Memoria virtuala este deci memoria care apare alocata aplicatiilor program. Sistemul de operare foloseste o parte din hard disk ca memorie virtuala si schimba date intre hard disk si memoria fizica. Memoria virtuala permite multitasking. Daca
7

Initiere in sistemul de operare Unix

Petre Gologan SNTM

este nevoie sa rulam diverse programe simultan iar memoria ceruta de aceste programe depaseste memoria fizica disponibila, sistemul de operare aloca memorie virtuala pentru satisfacerea cerintelor de memorie ale fiecarui program si apoi gestioneaza memoria fizica disponibila pentru satisfacerea cerintelor la un moment dat. Dimensiunea memoriei virtuale alocate poate fi mult mai mare decat dimensiunea memoriei fizice instalate in sistem. Folosirea memoriei virtuale implica paging si swapping. Paging apare cand un proces activ cere mai multa memorie deca este acesibila in memoria fizica. Parti ale procesului sunt mutate pe disk astfel incat memoria fizica poate fi folosita pentru alt proces activ. Swapping: Are loc atunci cand kernel-ul nu gaseste suficienta memorie RAM pentru un proces nou. Kernelul selecteaza procesul cel mai putin ocupat si il muta in intregime pe hard disk(program, stive folosite, date). Cand mai multa memorie RAM devine disponibila kernelul muta procesul inapoi de pe hard disk in memoria RAM. Acest mod de utilizare a memoriei virtuala face posibila folosirea sistemului in continuare, evident cu reducerea performantelor de sistem. Concluzie: Memoria RAM trebuie sa fie cat mai mare. Unde este fisierul kernel? Directorul root contine atat programul de boot cat si fisierul continand kernelul sistemului. Numele acestui fisier este diferit de la un tip de sistem unix/linux la altul dar de obicei include campul nix sau nuz : $ ls -l /*nuz* -rw-r--r-- 1 root root 1346428 Jul 26 2004 /vmlinuz $ % ls -l /*nix* -rwxr-xr-x 1 root sys 1490272 Sep 20 2001 /genunix
%

Obs. Fisierul kernel nu trebuie sters accidental si este bine sa avem o salvare a lui. Fara fisierul kernel sistemul nu va starta.

2. 2 Sistemul de fisiere
Sistemul de fisiere este o componenta esentiala in toate mediile Unix furnizand mecanismele pentru memorarea si regasirea fisierelor precum si o structura ierarhica de organizare.
8

Initiere in sistemul de operare Unix

Petre Gologan SNTM

In Unix se poate face referire la doua tipuri de fisiere sistem: structura de directori(logic) sau aranjarea fisierelor in partitiile discului(fizic). Sistemul de fisiere fizic este divizat in partitii pe disc. Dimensiunea partitiei determina numarul de blocuri pe care sistemul de fisiere il foloseste. Fiecare sistem de fisiere are un superblock, inode-uri si data blocks. In superblock se gasesc informatii de control pentru sistem. Inode-urile contin informatii de control pentru fisiere. Inode-ul este un fisier special care este citit de kernel si astfel obtine informatii despre fiecare fisier. Data blocks contin datele fisierelor. Un exemplu de organizare:
Filesystem /dev/dsk/c0t0d0s0 /dev/dsk/c0t0d0s3 proc fd mnttab swap /dev/dsk/c0t0d0s6 swap /dev/dsk/c0t0d0s7 kbytes 2507769 8065025 0 0 0 1888856 5040814 1889272 17365172 used 1118515 1042983 0 0 0 8 1513181 424 1504319 avail capacity 1339099 46% 6941392 14% 0 0% 0 0% 0 0% 1888848 1% 3477225 31% 1888848 1% 15687202 9% Mounted on / /usr /proc /dev/fd /etc/mnttab /var/run /work /tmp /export

Prima partitie(c0t0d0s0) este intotdeauna partitia de root /. Sistemul de fisiere logic se refera la o organizare ierarhica pe directoare si fisiere accesibile utilizatorului. Sistemul de fisiere Unix este organizat intr-o structura de arbore inversat sau de piramida, unde toate fisierele sunt logic continute in directorul root, notat cu / .

Exemplu de structura de sistem de fisiere: Exista diferite organizari ale directoarelor functie de tipul de sistem Unix. Fiecare nod din arbore este ori un fisier ori un director, in care putem avea alte fisiere si directoare. Specificam un fisier sau director prin numele de cale (path name)
9

Initiere in sistemul de operare Unix

Petre Gologan SNTM

absoluta sau relativa la o locatie. Numele intreg de cale incepe cu root, / si urmeaza ramurile sistemului de fisiere , fiecare separate de /, pana cand gasim fisierul. Ex. /usr/ Numele relativ de cale specifica calea relativ la alta, de obicei directorul curent de lucru. Avem doua directoare speciale: . directorul curent .. parintele directorului curent Sistemul de fisiere Unix furnizeaza sistemului de operare capabilitati cum ar fi: Creare si stergere de fisiere; Deschiderea fisierelor pentru citire/scriere; Pozitionare in interiorul fisierului; Inchidere fisiere; Creare directori; Listare continut directoare; Stergere directoare;

2.3 Programe Unix


Un program sau comanda intreactioneaza cu kernelul pentru realizarea functiilor cerute de utilizator. Un program poate fi: - un fisier shell executabil, cunoscut si sub numele de shell script; - o comanda interna shell; - un program sursa compilat, fisier in cod obiect; Programele sistem sunt programe binare, compilate din surse scrise in limbaj C. Sunt localizate in directoarele /bin, /usr/bin, /usr/local/bin etc. Shell-ul este un limbaj de comanda si un limbaj de programare care furnizeaza o interfata catre sistemul de operare Unix. Poate fi considerat si ca un interpretor de comenzi(Comand Line Interpretor) : preia fiecare comanda si o trece catre kernel spre executie si apoi afiseaza rezultatul acestei comenzi.

2.4 Conectarea la un sistem Unix


Deschiderea unei sesiuni(login) este operatia de conectare la un sistem multiutilizator pornind de la un terminal care poate fi consola sistemului sau un terminal conectat la distanta. Trebuie stiut ca Unix fata de alte sisteme este case sensitive adica face diferenta intre litere majuscule si minuscule. La conectarea pe un sistem Unix este cerut un nume utilizator si o parola:
SunOS 5.8 login: operator Password:
10

Initiere in sistemul de operare Unix

Petre Gologan SNTM

Last login: Mon Jan 16 00:52:02 from SAS YRBK% yrbk login: operator Password: Linux 2.4.21. Last login: Fri Jan 13 12:04:18 +0000 2006 on pts/2 from 192.168.5.35. No mail. operator@yrbk:~$

Parola poate fi schimbata cu comanda passwd

2.5 Comenzi Unix, redirectare


O comanda consta din numele propriu-zis al acesteia(un singur cuvant) urmata eventual de unul sau mai multe argumente(optiuni sau parametri). Elementele comenzii sunt separate prin spatii si comanda se termina cu <RETURN>. Fiecare linie introdusa de la tastatura este memorata si este efectiva abia dupa receptia caracterului de sfarsit linie. Acest lucru permite eventual anularea unor caractere introduse eronat. Majoritatea comenzilor unix deschid 3 descriptori de fisiere asignati in felul urmator: 0 intrarea standard(stdin) asociata tastaturii terminalului; 1 iesirea standard(stdout) asociata ecranului terminalului; 2 iesirea de erori(stderr) asociata ecranului ternminalului; Este posibil sa redirijam intrarea si iesirea comenzilor catre un fisier sau catre alta comanda. Sub shell redirectarea se face cu ajutorul caracterelor >, >>, <, <<, |. (Bourne shell)
$ cmd > file $ cmd >>file

In primul caz creem fisierul file sau il stergem daca exista deja. In al doilea caz adauga la sfarsitul fisierului rezultatul comenzii. Pentru redirijarea erorilor folosim 2> si 2>> in loc de > si >>.
Exemple: $ pwd /home/centre/muntenia $ pwd > pwd.out $ cat pwd.out /home/centre/muntenia $ pwd >> pwd.out
11

Initiere in sistemul de operare Unix

Petre Gologan SNTM

$ cat pwd.out /home/centre/muntenia /home/centre/muntenia $ cat pwd.out >> pwd.out cat: pwd.out: input file is output file # eroare $ cat pwd.out >> pwd.out 2> pwd.err $ cat pwd.err cat: pwd.out: input file is output file $ > ttest $ ls MUNTENIA.exe pwd.err pwd.out ttest $ ls -l total 2020 -rw-r--r-- 1 centre users 2054865 May 27 2004 MUNTENIA.exe -rw-r--r-- 1 centre users 40 Jan 16 12:11 pwd.err -rw-r--r-- 1 centre users 44 Jan 16 12:07 pwd.out -rw-r--r-- 1 centre users 0 Jan 16 12:12 ttest $

Redirectionarea intrarii standard


$ cmd < file

Pentru majoritatea comenzilor sintaxele cmd < file si cmd file sunt echivalente.
Exemple: $ cat < pwd.out /home/centre/muntenia /home/centre/muntenia $ cat > cat.input Aceasta este o metoda practica de a crea fisiere mici fara a utiliza un editor de texte. Inchiderea intrarii standard se se face cu Ctrl-D la inceputul liniei. $ ls -l total 2024 -rw-r--r--rw-r--r--rw-r--r--rw-r--r--rw-r--r-$

1 centre 1 centre 1 centre 1 centre 1 centre

users users users users users

2054865 May 27 2004 MUNTENIA.exe 160 Jan 16 12:24 cat.input 40 Jan 16 12:11 pwd.err 44 Jan 16 12:07 pwd.out 0 Jan 16 12:12 ttest

12

Initiere in sistemul de operare Unix

Petre Gologan SNTM

Redirectionarea intre comenzi Redirectarea intre comenzi se numeste pipe si este simbolizata prin caracterul | .

Schema bloc pipe Unix

$ pwd | od x # afisare nume director curent in hexazecimal 0000000 682f 6d6f 2f65 6563 746e 6572 6d2f 6e75 0000020 6574 696e 0a61 0000026 $ who bkmet tty1 Jan 16 10:26 gologan pts/1 Jan 16 11:50 (192.168.5.35) $ who | wc -l 2 $ $ ls -al | more total 2032 drwxr-xr-x 2 centre users 4096 Jan 16 12:21 . drwxrwxrwx 17 centre users 4096 Oct 31 09:25 .. -rw-r--r-- 1 centre users 2054865 May 27 2004 MUNTENIA.exe -rw-r--r-- 1 centre users 160 Jan 16 12:24 cat.input -rw-r--r-- 1 centre users 40 Jan 16 12:11 pwd.err -rw-r--r-- 1 centre users 44 Jan 16 12:07 pwd.out -rw-r--r-- 1 centre users 0 Jan 16 12:12 ttest

Folosim comanda more ca sa putem afisa pagina cu pagina pe ecran(cand avem un catalog cu multe fisiere).

13

Initiere in sistemul de operare Unix

Petre Gologan SNTM

Partea II
3. Sistemul de fisiere, comenzi
Structura fisierelor sub Unix este o structura arborescenta compusa din directoare (cataloage, repertoare) si fisiere. Pentru toate fisierele exista o cale de la radacina (/) catre fisier iar aceasta cale identifica fara ambiguitate fiecare fisier. Calea cu toata structura /dirname1/dirname2/.../dirnamen se numeste referinta absoluta radacina pentru referinta absoluta este /. Referinta la un fisier care nu incepe cu / este o referinta relativa. Fiecare utilizator are un catalog privat care devine si catalogul sau de lucru la startarea sesiunii de lucru(login). 3.1 Tipuri de fisiere Fisierele pot fi grupate in trei mari categorii: 3.1.1 Fisiere ordinare Sunt fisiere care contin programe(binare sau sursa), date ale programelor utilizator sau de sistem(fisiere ASCII). Aceste fisiere sunt rezultatul unor programe(editoare, compilatoare,...). 3.1.2 Fisiere speciale Un fisier special este asociat unui dispozitiv fizic de intrare-iesire. Fisierele speciale sunt tratate de sistem ca fisiere pe disc ordinare dar operatiile de citire/scriere pe aceste fisiere activeaza dispozitivele fizice asociate. Se pot distinge doua tipuri de fisiere speciale: - fisiere speciale in mod caracter precum terminalele, pentru care intrarile-iesirile sunt realizate caracter cu caracter. - fisiere speciale in mod bloc precum discurile, pentru care intrarile-iesirile sunt realizate in mod bloc(512 sau 1024 octeti). 3.1.3 Directoare(Fisiere catalog) Directoarele sunt folosite pentru gruparea fisierelor pe categorii semnificative. Principalele cataloage(directoare) existente in sistemele Unix sunt: - root (/) contine toate celelalte fisiere si directoare.
14

Initiere in sistemul de operare Unix

Petre Gologan SNTM

- /bin si /usr/bin contin programe executabile(binare) asociate sistemului de fisiere; - /dev este rezervat pentru fisierelor speciale; Toate fisierele speciale trebuiesc definite in acest director sau in subdirectoare ale acestuia. - /etc contine fisiere necesare pentru operatii sistem de configurare, operatii de administrare si de maintenance. - /lib contine compilatorul si functiile acestuia.(biblioteci); - /tmp contine fisiere temporare; - /usr contine fisiere sistem utilizator; - /usr/bin si /usr/local/bin toate fisierele executabile necesare utilizatorilor;

3.2

Atributele fisierelor si directoarelor

Fisierele si directoarele au un nume, o cale(path) si un set de atribute. Sistemul pastreaza calea fisierelor si directoarelor folosind inode uri (index node). Comanda ls l, putem vedea cateva atribute ale fisierelor si directoarelor:
Tip fisier Permisii Nr. links Grup Data ultimei modif. Dimens. in octeti Nume fisier Timpul ultimei modif.

Proprietar

-rwxr-xr-x -rwxr-xr-x drwxr-xr-x -rw-r--r-drwxr-xr-x

1 1 2 1 3

centre centre centre centre centre

users 103756 2004-05-13 users 281264 2002-02-24 users 12288 2006-01-17 users 180 2006-01-17 users 4096 2006-01-17

08:17 22:39 10:30 16:40 16:44

a2p a2ps info llx.txt prog

Primul cod (Tip fisier) indica felul fisierului prezent in lista: fisier ordinar b fisier special bloc c fisier special caracter d director l link simbolic

Pentru un fisier dat utilizatorii sistemului pot fi clasificati in trei categorii: - proprietarul fisierului;
15

Initiere in sistemul de operare Unix

Petre Gologan SNTM

- membri unui grup particular; - ceilalti utilizatori; Exista in sistem un utilizator privilegiat dispunand de toate drepturile (superuser), utilizatorul root. 3.2.1 Drepturi de acces fisiere si directoare Un fisier poseda 3 permisii rwx aplicabile celor 3 clase de utilizatori(owner, group, others): - r dreptul de citire a fisierului. - w drept de scriere si de modificare a fisierului. - x drept de executie a fisierului. owner rwx group rwx other rwx

O protectie buna pentru un fisier este realizata atribuind permisiile -rw------. Pentru un director drepturile rwx au urmatoare semnificatie: - r dreptul de citire si deci de listare a directorului(ls), dar citirea fisierelor este interzisa daca fisierele sunt protejate la citire. - w drept de scriere in director si deci de stergere a fisierelor continute. -x drept de a traversa directorul(cd) O protectie buna pentru un director este : drwx--x--x. Numar octal 0 1 2 3 4 5 6 7 permisii rwx rwr-x r--wx -w--x ---

read, write and execute read and write read and execute read only write and execute write only execute only no permissions

Comanda umask 066 : drwx--x--x si rw------- pentru fisiere. In comanda umask specificam permisiile fisierului pe care vrem sa le anulam. 3.2.2 Notiunea de grup
16

Initiere in sistemul de operare Unix

Petre Gologan SNTM

Un utilizator la un moment dat are drepturile de acces ale unui singur grup definit la crearea userului. Toate fisierele create de acest utilizator apartin acestui grup. Userul poate sa-si schimbe grupul si sa utilizeze alt grup in care este membru cu ajutorul comenzii newgrp. Comanda are ca efect schimbarea GID cu grupul nou. $ newgrp sntm Comanda newgrp este o comanda interna shell(built-in) 3.2.3 Comenzile chown, chgrp, chmod Pentru a putea utiliza cu succes aceste comenzi trebuie sa fim proprietarul fisierului sau root. Comanda chgrp permite schimbarea grupului unui fisier sau director. Grupul ales este unul deja existent in sistem.
$ groups sntm users $ ls l filetest -rwxr-xr-x 1 centre users $ chgrp sntm filetest $ ls l filetest -rwxr-xr-x 1 centre sntm $ chown root filetest $ ls l filetest -rwxr-xr-x 1 root sntm $ chown centre filetest ----eroare $ chmod 555 file1

103756

2004-05-13 08:17 filetest

103756

2004-05-13 08:17 filetest

103756

2004-05-13 08:17 filetest

modifica drepturile de acces ale fisierului;

3.2.4 Crearea si stergerea directoarelor Un director este creat cu comanda: mkdir (make directory). Sintaxa: mkdir numedirector
$mkdir dirtest $ mkdir programe bin temp programe/surse programe/test (atentie la ordine);

Directorul poate fi sters cu ajutorul comenzii rmdir:


$ rmdir dirtest rmdir: dirtest not empty $ rm dirtest/* (directorul nu este gol);

17

Initiere in sistemul de operare Unix

Petre Gologan SNTM

$ rmdir dirtest

3.2.5 Deplasarea in directoare: cd si pwd Comanda cd (change directory) permite schimbarea directorului curent iar comanda pwd(print working directory) permite afisarea numelui catalogului curent. Sintaxa: cd [director] Directorul este un nume relativ sau absolut. Cand argumentul este absent ne reintoarcem in directorul HOME, care este directorul initial(la login). Consideram subarborescenta urmatoare:

Daca directorul curent este programe putem merge in directorul bin astfel:
$ cd /home/centre/bin sau $ cd ../bin sau $ cd .. $ cd bin

Obs. Pentru toate directoarele numele directorului curent este ., iar numele directorului parinte este . . . Exemple
$ pwd /home/centre/programe $cd test
18

Initiere in sistemul de operare Unix

Petre Gologan SNTM

$ pwd /home/centre/programe/test $ cd ../.. $ pwd /home/centre $ cd temp $ pwd /home/centre/temp $ cd $ pwd /home/centre

3.2.6 Listarea atributelor fisierelor si directoarelor: ls Comanda ls (list files) permite listarea continutului directoarelor. Sintaxa: ls [-CFRacdilqrtu1] [files] Exemple
$ ls dict/ etc/ include/ lib/ local/ sbin/ X11R6/ bin/ doc/ i486-slackware-linux/ info/ libexec/ man/ share/ src/ $ ls -l total 144 lrwxrwxrwx 1 root 5 2004-05-18 17:22 X11 -> X11R6/ drwxr-xr-x 11 root 4096 2002-03-13 04:26 X11R6/ lrwxrwxrwx 1 root 8 2004-05-18 17:22 adm -> /var/adm/ drwxr-xr-x 2 bin 36864 2004-05-18 17:43 bin/ drwxr-xr-x 2 root 4096 1993-11-26 05:40 dict/ drwxr-xr-x 497 root 12288 2002-03-13 04:26 doc/ drwxr-xr-x 2 root 4096 2004-05-18 17:22 etc/ drwxr-xr-x 4 root 4096 2004-05-11 07:48 i486-slackware-linux/ drwxr-xr-x 150 root 8192 2004-02-24 04:33 include/ drwxr-xr-x 2 root 12288 2002-03-15 12:43 info/ drwxr-xr-x 90 root 32768 2004-05-18 17:43 lib/ drwxr-xr-x 8 root 4096 2004-05-12 22:45 libexec/ drwxr-xr-x 11 root 4096 1994-03-16 03:50 local/ drwxr-xr-x 35 root 4096 2004-03-23 06:41 man/ drwxr-xr-x 2 bin 8192 2004-05-11 09:00 sbin/ drwxr-xr-x 152 root 4096 2004-03-23 06:42 share/ lrwxrwxrwx 1 root 10 2004-05-18 17:22 spool -> /var/spool/ drwxr-xr-x 5 root 4096 2004-05-18 17:30 src/ lrwxrwxrwx 1 root 8 2004-05-18 17:22 tmp -> /var/tmp/
19

Initiere in sistemul de operare Unix

Petre Gologan SNTM

$ ls -l /usr/local total 36 drwxr-xr-x 2 bin 4096 1993-11-24 19:32 bin/ drwxr-xr-x 2 root 4096 1993-11-24 19:32 etc/ drwxr-xr-x 2 root 4096 1993-11-24 19:32 games/ drwxr-xr-x 2 root 4096 1994-03-16 03:50 include/ drwxr-xr-x 2 root 4096 1993-11-24 19:32 info/ drwxr-xr-x 2 root 4096 1994-03-16 02:05 lib/ drwxr-xr-x 22 root 4096 1994-06-02 04:37 man/ drwxr-xr-x 2 bin 4096 1993-11-24 19:32 sbin/ drwxr-xr-x 2 root 4096 1993-11-24 19:32 src/

Optiuni utile: -l: lista in format lung; -a: lista continand si fisierele incepand cu .; -R: listeaza directoarele recursiv; -d: listeaza caracteristicile directoarelor;

3.2.7 Definirea mastii la crearea fisierelor: umask Comanda umask permite pozitionarea unei masti care defineste permisii la crearea fisierelor. Masca este complementul in baza 2 a permisiunilor. Este exprimata in baza 8. Exemple rwx 111 000 0 --x --x 001 001 110 110 6 6 permisiune simbolica. permisiune binara: 711 in octal; masca binara; masca in octal;
# pozitionarea mastii. # afisarea mastii.

$ umask 066 $ umask 0066

3.2.8 Schimbarea drepturilor de acces ale fisierelor: chmod Comanda chmod (change mode) modifica modul (permisiunile) fisierelor si directoarelor. Sintaxa: chmod [ugoa][+ - =][rwxstugo] files - a aplica la toti: user, grup si altii
20

Initiere in sistemul de operare Unix

Petre Gologan SNTM

o aplica pentru altii(other) g aplica la grup(group) u aplica pentru proprietar(user)

$ ls -l total 28 -rwxr-xr-x 1 centre users 5161 2004-02-22 23:35 rc.inet1 -rw-r--r-- 1 centre users 907 2004-06-07 18:00 rc.inet1.conf -rw-r--r-- 1 centre users 8091 2002-02-25 21:38 rose_link.c -rw-r--r-- 1 centre users 2556 2000-12-30 00:44 rose_loopback.c -rw-r--r-- 1 centre users 3214 2000-12-30 00:44 rose_out.c $ pwd /home/centre/programe/surse $ chmod 750 *.c $ ls -l total 28 -rwxr-xr-x 1 centre users 5161 2004-02-22 23:35 rc.inet1 -rw-r--r-- 1 centre users 907 2004-06-07 18:00 rc.inet1.conf -rwxr-x--- 1 centre users 8091 2002-02-25 21:38 rose_link.c -rwxr-x--- 1 centre users 2556 2000-12-30 00:44 rose_loopback.c -rwxr-x--- 1 centre users 3214 2000-12-30 00:44 rose_out.c

Aplicarea, scoaterea unei permisii # Acelasi lucru in notatie simbolica


$ chmod u+x,o-r,g+x *.c $ ls -l total 28 -rwxr-xr-x 1 centre users 5161 2004-02-22 23:35 rc.inet1 -rw-r--r-- 1 centre users 907 2004-06-07 18:00 rc.inet1.conf -rwxr-x--- 1 centre users 8091 2002-02-25 21:38 rose_link.c -rwxr-x--- 1 centre users 2556 2000-12-30 00:44 rose_loopback.c -rwxr-x--- 1 centre users 3214 2000-12-30 00:44 rose_out.c $

# Adauga modul x pentru proprietar si ridicam modul r pentru altii


$ chmod u+x,o-r r* $ ls -l total 28 -rwxr-x--x 1 centre users 5161 2004-02-22 23:35 rc.inet1 -rwxr----- 1 centre users 907 2004-06-07 18:00 rc.inet1.conf -rwxr-x--- 1 centre users 8091 2002-02-25 21:38 rose_link.c -rwxr-x--- 1 centre users 2556 2000-12-30 00:44 rose_loopback.c -rwxr-x--- 1 centre users 3214 2000-12-30 00:44 rose_out.c
21

Initiere in sistemul de operare Unix

Petre Gologan SNTM

# Suprimarea modului r pentru grup


$ chmod g-r rc.inet1

Obs. Notatia octala nu permite adaugarea sau suprimarea unui atribut particular al unui fisier si sa lase celelalte atribute neschimbate.

3.2.9 Crearea unui link la un fisier: ln Un link este definirea unui al doilea nume pentru un fisier care exista deja. Este posibil sa creem link-uri ale unui fisier ordinar sau special adica de a crea mai multe referinte diferite, la un acelasi fisier fizic, adica crearea de sinonime ale aceluiasi obiect fara crearea unui nou inode: Sintaxa: ln numefis1 numefis2

Fisierul numefis1 trebuie sa existe, fisierul numefis2 nu trebuie sa existe, acesta devenind un alt nume posibil pentru numefis1.
$ pwd /home/centre/programe $ ls -il total 36 2228545 -rw------- 1 centre users 1112 2003-05-23 08:07 ediff.gz 2228546 -rw------- 1 centre users 3740 2003-05-23 08:07 efaq.gz 2228555 -rw------- 1 centre users 31 2006-01-18 23:01 rc1 2228560 -rw------- 1 centre users 374 2006-01-18 22:49 rc2.conf 2228552 -rw------- 1 centre users 8091 2006-01-18 00:48 ros1.c 2228554 -rw------- 1 centre users 3214 2006-01-18 00:48 rosout.c 2228550 drwxr-xr-x 3 centre users 4096 2006-01-18 22:49 surse/ 2228551 drwxr-xr-x 2 centre users 4096 2006-01-18 00:20 test/ $ ln rc1 rc1_bis $ cat rc1 # Config information for eth0: $ cat rc1_bis # Config information for eth0: $

Fisierele referite de rc1 si rc1_bis au acelasi continut; putem verifica ca cele 2 referinte sunt pentru acelasi fisier:
$ ls -il
22

Initiere in sistemul de operare Unix

Petre Gologan SNTM

total 40 2228545 -rw------- 1 centre users 1112 2003-05-23 08:07 ediff.gz 2228546 -rw------- 1 centre users 3740 2003-05-23 08:07 efaq.gz 2228555 -rw------- 2 centre users 31 2006-01-18 23:01 rc1 2228555 -rw------- 2 centre users 31 2006-01-18 23:01 rc1_bis 2228560 -rw------- 1 centre users 374 2006-01-18 22:49 rc2.conf 2228552 -rw------- 1 centre users 8091 2006-01-18 00:48 ros1.c 2228554 -rw------- 1 centre users 3214 2006-01-18 00:48 rosout.c 2228550 drwxr-xr-x 3 centre users 4096 2006-01-18 22:49 surse/ 2228551 drwxr-xr-x 2 centre users 4096 2006-01-18 00:20 test/

Optiunea -i permite verificarea daca cele doua referinte rc1 si rc1_bis corespund amandoua la inod-ul cu nr. 2228555 Vom crea o a treia referinta a aceluiasi fisier in subdirectorul test:
$ ln rc1 test/rc1 $ ls il test/rc1 2228555 -rw------- 3 centre users 31 2006-01-18 23:01 test/rc1 $

Crearea unui link simbolic(optiunea s)


$ pwd /home/centre/programe $ ls -l total 20 -rw------- 1 centre users 374 2006-01-18 22:49 rc2.conf -rw------- 1 centre users 8091 2006-01-18 00:48 ros1.c -rw------- 1 centre users 3214 2006-01-18 00:48 rosout.c drwxr-xr-x 3 centre users 4096 2006-01-19 00:15 test $ ln -s ros1.c rs1.c $ ls rc2.conf ros1.c rosout.c rs1.c test $ ls -l total 20 -rw------- 1 centre users 374 2006-01-18 22:49 rc2.conf -rw------- 1 centre users 8091 2006-01-18 00:48 ros1.c -rw------- 1 centre users 3214 2006-01-18 00:48 rosout.c lrwxrwxrwx 1 centre users 6 2006-01-19 01:10 rs1.c -> ros1.c drwxr-xr-x 3 centre users 4096 2006-01-19 00:15 test $ ls -il total 20 2228560 -rw------- 1 centre users 374 2006-01-18 22:49 rc2.conf 2228552 -rw------- 1 centre users 8091 2006-01-18 00:48 ros1.c 2228554 -rw------- 1 centre users 3214 2006-01-18 00:48 rosout.c 2228545 lrwxrwxrwx 1 centre users 6 2006-01-19 01:10 rs1.c -> ros1.c 2228551 drwxr-xr-x 3 centre users 4096 2006-01-19 00:15 test
23

Initiere in sistemul de operare Unix

Petre Gologan SNTM

3.2.10 Copiere de fisiere : cp Comanda cp permite efectuarea unei copii fizice a unui fisier in altul. Aceasta inseamna crearea unui nou inode, crearea unei noi intrari in director si recopierea efectiva a continutului primului fisier. Sintaxa: cp [-ip] f1 f2 sau cp [-irp] f1... fn d2 In sintaxa de baza fisierul f1 este duplicat in f2. Daca fisierul f2 exista, el va fi sters. Optiunea -i permite evitarea acestui tip de incident.
$ ls -l total 36 -rw------- 3 centre users 31 2006-01-18 23:01 rc1 -rw------- 3 centre users 31 2006-01-18 23:01 rc1_bis -rw------- 1 centre users 374 2006-01-18 22:49 rc2.conf -rw------- 1 centre users 374 2006-01-18 23:21 rc2_bis -rw------- 1 centre users 8091 2006-01-18 00:48 ros1.c -rw------- 1 centre users 3214 2006-01-18 00:48 rosout.c drwxr-xr-x 3 centre users 4096 2006-01-18 22:49 surse drwxr-xr-x 2 centre users 4096 2006-01-18 23:11 test $ cp rc2.conf rc2_bis $ ls -l total 36 -rw------- 3 centre users 31 2006-01-18 23:01 rc1 -rw------- 3 centre users 31 2006-01-18 23:01 rc1_bis -rw------- 1 centre users 374 2006-01-18 22:49 rc2.conf -rw------- 1 centre users 374 2006-01-18 23:22 rc2_bis -rw------- 1 centre users 8091 2006-01-18 00:48 ros1.c -rw------- 1 centre users 3214 2006-01-18 00:48 rosout.c drwxr-xr-x 3 centre users 4096 2006-01-18 22:49 surse drwxr-xr-x 2 centre users 4096 2006-01-18 23:11 test $

Fiecare din cele doua fisiere rc2.conf si rc2_bis au un singur link: numerele de inode sunt diferite
$ ls -il rc2.conf rc2_bis 2228560 -rw------- 1 centre users 374 2006-01-18 22:49 rc2.conf 2228561 -rw------- 1 centre users 374 2006-01-18 23:22 rc2_bis $
24

Initiere in sistemul de operare Unix

Petre Gologan SNTM

$ cp rc1 rosout.c ros1.c test $

# test este director

Optiunea -r permite sintaxa cp -r fd1 fd2....fdn d2 in care fd1...fdn pot fi fisiere sau directoare. Directoarele si continutul lor vor fi copiate recursiv in directorul d2. Optiunea -p permite conservarea pentru noul fisier a permisiunilor fisierului de origine, precum si data ultimei modificari.
$ ls rc1 rc1_bis rc2.conf rc2_bis ros1.c rosout.c surse test $ ls -l total 36 -rw------- 2 centre users 31 2006-01-18 23:01 rc1 -rw------- 2 centre users 31 2006-01-18 23:01 rc1_bis -rw------- 1 centre users 374 2006-01-18 22:49 rc2.conf -rw------- 1 centre users 374 2006-01-18 23:27 rc2_bis -rw------- 1 centre users 8091 2006-01-18 00:48 ros1.c -rw------- 1 centre users 3214 2006-01-18 00:48 rosout.c drwxr-xr-x 2 centre users 4096 2006-01-18 23:48 surse drwxr-xr-x 2 centre users 4096 2006-01-18 23:36 test $ cp -r rc1 test surse $ cd surse $ ls -l total 8 -rw------- 1 centre users 31 2006-01-18 23:50 rc1 drwxr-xr-x 2 centre users 4096 2006-01-18 23:50 test $ cd test $ ls rc1 ros1.c rosout.c $

3.2.11 Stergere de fisiere: rm Comanda rm(remove) permite stergerea fisierelor. Sterge linkul la fisier si deoarece acesta este unic rezulta ca si datele fisierului sunt distrusse. Sintaxa: rm[-ifr] f1 f2....fn Optiuni: - -i mod interactiv ( cere confirmare de stergere) - -r Daca fn este un director, atunci este permisa stergerea recursiva - -f daca fisierul nu exista nu afiseaza mesaj de eroare, daca nu exista dreptul w, nu cere confirmare pentru stergere. Atentie! comanda rm * sterge toate fisierele din directorul curent comanda rm -fr * sterge toate fisierele si directoarele din directorul curent
25

Initiere in sistemul de operare Unix

Petre Gologan SNTM

$ ls -l total 36 -rw------- 2 centre users 31 2006-01-18 23:01 rc1 -rw------- 2 centre users 31 2006-01-18 23:01 rc1_bis -rw------- 1 centre users 374 2006-01-18 22:49 rc2.conf -rw------- 1 centre users 374 2006-01-18 23:27 rc2_bis -rw------- 1 centre users 8091 2006-01-18 00:48 ros1.c -rw------- 1 centre users 3214 2006-01-18 00:48 rosout.c drwxr-xr-x 3 centre users 4096 2006-01-18 23:50 surse drwxr-xr-x 2 centre users 4096 2006-01-18 23:36 test $ rm *bis $ ls -l total 28 -rw------- 1 centre users 31 2006-01-18 23:01 rc1 -rw------- 1 centre users 374 2006-01-18 22:49 rc2.conf -rw------- 1 centre users 8091 2006-01-18 00:48 ros1.c -rw------- 1 centre users 3214 2006-01-18 00:48 rosout.c drwxr-xr-x 3 centre users 4096 2006-01-18 23:50 surse drwxr-xr-x 2 centre users 4096 2006-01-18 23:36 test $

3.2.12 Redenumirea fisierelor, directoarelor: mv

Comanda mv(move) permite redenumirea unui fisier sau deplasarea lui in arborescenta fisierelor. Sintaxa: sau mv [-if] f1 f2 mv [-if] f1...fn d1 (1) (2)

Forma (1): f1 si f2 in forma (1) sunt fisiere sau directoare. Forma (2): f1, f2,..fn sunt fisiere si sau directoare iar d1 este un director.
$ cd test $ ls -l total 0 $ cd .. $ ls -l total 28 -rw-------rw-------rw-------rw-------

1 centre users 31 2006-01-18 23:01 rc1 1 centre users 374 2006-01-18 22:49 rc2.conf 1 centre users 8091 2006-01-18 00:48 ros1.c 1 centre users 3214 2006-01-18 00:48 rosout.c
26

Initiere in sistemul de operare Unix

Petre Gologan SNTM

drwxr-xr-x 3 centre users 4096 2006-01-19 00:14 surse drwxr-xr-x 2 centre users 4096 2006-01-19 00:14 test $ mv rc1 surse test $ ls -l total 20 -rw------- 1 centre users 374 2006-01-18 22:49 rc2.conf -rw------- 1 centre users 8091 2006-01-18 00:48 ros1.c -rw------- 1 centre users 3214 2006-01-18 00:48 rosout.c drwxr-xr-x 3 centre users 4096 2006-01-19 00:15 test $ cd test $ ls -l total 8 -rw------- 1 centre users 31 2006-01-18 23:01 rc1 drwxr-xr-x 3 centre users 4096 2006-01-19 00:15 surse

4. Comenzi de baza Unix


4.1 Comanda cat

Comanda cat este un filtru care permite filtrare si concatenare de fisiere. Comanda cat permite afisarea la iesirea standard a continutului unui fisier sau a mai multor fisiere ale caror referinte sunt date in argumente. Fara argumente comanda trateaza intrarea standard. Exemple
$ ls -l total 16 -rw------- 1 centre users 374 2006-01-18 22:49 rc2.conf -rw------- 1 centre users 93 2006-01-19 02:57 ros1.c -rw------- 1 centre users 98 2006-01-19 02:54 rosout.c drwxr-xr-x 3 centre users 4096 2006-01-19 00:15 test $ cat ros1.c struct sk_buff *skb; unsigned char *dptr; int len; struct net_dev *first; int facl = 0; $ cat rosout.c #include <linux/errno.h> #include <linux/types.h>
27

Initiere in sistemul de operare Unix

Petre Gologan SNTM

#include <linux/socket.h> #include <linux/in.h> $ cat ros1.c rosout.c > rosall.c $ ls -l total 20 -rw------- 1 centre users 374 2006-01-18 22:49 rc2.conf -rw------- 1 centre users 93 2006-01-19 02:57 ros1.c -rw-r--r-- 1 centre users 191 2006-01-19 02:59 rosall.c -rw------- 1 centre users 98 2006-01-19 02:54 rosout.c drwxr-xr-x 3 centre users 4096 2006-01-19 00:15 test $ cat rosall.c struct sk_buff *skb; unsigned char *dptr; int len; struct net_dev *first; int facl = 0; #include <linux/errno.h> #include <linux/types.h> #include <linux/socket.h> #include <linux/in.h> $

Fisierul ros1.c si rosout.c sunt concatenate pentru a produce fisierl rosall.c. In caz ca nu exista redirectare rezultatul este afisat la iesirea standard. Optiuni: -v permite transformarea(filtrarea) caracterelor neimprimabile intr-o forma imprimabila. -n permite numerotarea liniilor

4. 2 Afisarea fisierelor pe pagini: more Comanda more permite afisarea fisierelor pagina cu pagina.
$ ls -l total 20 -rw------- 1 centre users 374 2006-01-18 22:49 rc2.conf -rw------- 1 centre users 93 2006-01-19 02:57 ros1.c -rw-r--r-- 1 centre users 191 2006-01-19 02:59 rosall.c -rw------- 1 centre users 98 2006-01-19 02:54 rosout.c drwxr-xr-x 3 centre users 4096 2006-01-19 00:15 test $ more rc2.conf erface] is set to "yes", this overrides any other settings. # If you don't have an interface, leave the settings null ("").
28

Initiere in sistemul de operare Unix

Petre Gologan SNTM

# Config information for eth0: IPADDR[0]="192.168.189.202" NETMASK[0]="255.255.255.248" USE_DHCP[0]="" DHCP_HOSTNAME[0]="" # Config information for eth1: IPADDR[1]="" NETMASK[1]="" USE_DHCP[1]="" DHCP_HOSTNAME[1]="" # Config information for eth2:

4.3 Comparare de fisiere: cmp


Comanda cmp permite compararea a doua fisiere(ascii sau binare). Sintaxa: cmp [-l] [-s] fis1 fis2 Cand fisierele sunt identice comanda cmp nu afiseaza niciun mesaj.
$ ls -l total 28 -rw-r--r-- 1 centre users 22 2006-01-19 04:20 f1 -rw-r--r-- 1 centre users 23 2006-01-19 04:20 f2 -rw------- 1 centre users 374 2006-01-18 22:49 rc2.conf -rw------- 1 centre users 93 2006-01-19 02:57 ros1.c -rw-r--r-- 1 centre users 191 2006-01-19 02:59 rosall.c -rw------- 1 centre users 98 2006-01-19 02:54 rosout.c drwxr-xr-x 3 centre users 4096 2006-01-19 00:15 test $ cmp f1 f2 f1 f2 differ: byte 15, line 1 $ cmp -l f1 f2 15 12 40 16 154 62 17 151 12 18 156 154 20 141 156 21 62 151 22 12 141 cmp: EOF on f1 $

Pentru afisarea tuturor diferentelor folosim optiunea l care un tablou cu trei coloane: - prima coloana reprezinta pozitia caracterului in fisier;
29

Initiere in sistemul de operare Unix

Petre Gologan SNTM

- a doua si a treia coloana sunt respectiv caracterele care difera in cele doua fisiere; Optiunea s: nu afiseaza nici un rezultat, dar trimite codul de retur(1: fisiere diferite, 0: caz contrar).

4.4 Comparare fisiere ascii: diff


Comanda diff afiseaza diferentele intre doua fisiere ascii.
$ ls -l total 28 -rw-r--r-- 1 centre users 22 2006-01-19 04:20 f1 -rw-r--r-- 1 centre users 23 2006-01-19 04:20 f2 -rw------- 1 centre users 374 2006-01-18 22:49 rc2.conf -rw------- 1 centre users 93 2006-01-19 02:57 ros1.c -rw-r--r-- 1 centre users 191 2006-01-19 02:59 rosall.c -rw------- 1 centre users 98 2006-01-19 02:54 rosout.c drwxr-xr-x 3 centre users 4096 2006-01-19 00:15 test $ diff f1 f2 1,2c1,2 < fisier de test < linia2 --> fisier de test 2 > linia $

4.5 Determinarea tipului unui fisier: file Comanda file permite recunoasterea naturii unui fisier gratie numarului magic pe care il contine. Numarul magic corespunde in general primilor doi octeti din fisier
$ file * f1: ASCII text f2: ASCII text rc2.conf: ASCII English text ros1.c: ASCII C program text rosall.c: ASCII C program text rosout.c: ASCII C program text test: directory $
30

Initiere in sistemul de operare Unix

Petre Gologan SNTM

4.6 Listarea manualului unei comenzi: man Comanda man permite afisarea manualului on-line.
$ man printenv $

4.7 Listare variabile de environment:

printenv

Aceasta comanda permite afisarea ansamblului variabilelor de environment.


$printenv SHELL=/bin/bash TERM=linux USER=root MAIL=/var/spool/mail/root PATH=/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/usr/games:/opt/w ww/htdig/bin:/usr/lib/java/bin:/usr/lib/java/jre/bin:/opt/kde/bin:/usr/lib/qt/bin:/usr/share/texmf/bin PWD=/root HOME=/root LOGNAME=root

4.8 Listare stare procese, anularea unui proces: ps, kill

Comanda ps afiseaza lista cu starea proceselor.


$ ps PID TTY TIME CMD 1586 ttyp1 00:00:00 bash 1602 ttyp1 00:00:00 vi 1606 ttyp1 00:00:00 tex 1607 ttyp1 00:00:00 ps $

PID este numarul de identificarea proces.


$ ps -l F S UID 0 S 1002 0 T 1002 0 T 1002 0 R 1002 PID 1586 1602 1606 1608 PPID 1583 1586 1586 1586 C PRI NI ADDR SZ WCHAN TTY TIME CMD 0 78 0 - 660 wait4 ttyp1 00:00:00 bash 0 69 0 - 463 do_sig ttyp1 00:00:00 vi 0 76 0 - 830 do_sig ttyp1 00:00:00 tex 0 78 0 - 877 ttyp1 00:00:00 ps
31

Initiere in sistemul de operare Unix

Petre Gologan SNTM

Cu optiunea l (ps l) putem vedea structura arborescenta de creare a proceselor. Un proces este taiat cu ajutorul comenzii kill. kill [-signal] pid
$ kill -9 1606 $ [2]+ Killed tex $ ps PID TTY TIME CMD 1586 ttyp1 00:00:00 bash 1602 ttyp1 00:00:00 vi 1609 ttyp1 00:00:00 ps

Comanda kill l afiseaza lista semnalelor disponibile.

5. Limbajul de comanda Shell


Limbajul de comanda asigura interfata externa intre utilizator si sistem.Shell-ul furnizeaza un simplu si puternic limbaj de programare cu ajutorul caruia putem automatiza task-uri complexe, putem scrie propriile comenzi si putem conecta alte programe impreuna pentru a realiza secvente de operatii. Limbajul de programare ne permite sa creem diverse script-uri care pot deveni procese. Tipuri de shell: Bourne Shell /bin/sh C Shell /bin/csh Korn Shell /bin/ksh

Este primul shell care a fost dezvoltat;

5.1 Generalitati despre Bourne Shell Shell-ul furnizeaza facilitati pentru memorarea informatiilor utile si transferarea lor intre programe. Variabilele constau intr-un nume si o valoare asociata.
32

Initiere in sistemul de operare Unix

Petre Gologan SNTM

De exemplu putem defini o variabila NUME care sa fie directorul de lucru /home/clasa/nume_x, iar apoi tastam cd $NUME. Ne referim la valoarea variabilei prin prefixul $ la numele sau. Tipuri de variabile: Variabilele Shell sunt sunt create in interiorul shell-ului si sunt folosite pentru memorare temporara de informatii si pentru controlul executiei script-urilor shell. Variabilele de environment sunt utilizate de diverse comenzi ale shell-ului si de diverse comenzi sistem. Ele sunt numite de environment deoarece ele sunt exportate catre toate procesele child ale shell-ului(procesele lansate de shell). 1. Variabile initializate automat si care nu trebuiesc modificate:HOME, LOGNAME,USER. 2. Variabile initializate automat si care pot fi modificate: SHELL, PATH, TERM 3. Variabile care sunt initializate de utilizator in fisierul propriu .profile sau oricand in mod interactiv. Initializarea variabilei se face astfel: $ VARIABILA=valoare $ export VARIABILA Comanda export indica faptul ca variabila este de environment. Daca nu facem export este considerata variabila ordinara. Principalele variabile sunt: HOME, USER si LOGNAME TERM PATH contine lista cu directoarele in care shell-ul cauta o comanda; numele directoarelor sunt separate prin : SHELL contine numele shell-ului de login MAILcontine numele locatiei de mail (/usr/spool/mail/$LOGNAME) MAILCHECK intervalul de control pentru intrari mail PS1 valoarea primului prompt( default $<space>)
33

Initiere in sistemul de operare Unix

Petre Gologan SNTM

PS2 valoarea celui de al doilea prompter(default > <space>) Sintaxa numelui variabilelor: un nume de variabila incepe cu o litera si este urmata de caractere alfanumerice. Prin conventie variabilele de environment sunt nume cu majuscule. Exemple
$ pwd /home/centre $ $ echo $HOME /home/centre $ PS1=SALA SALApwd /home/centre SALAPS1=SALA: SALA: SALA:pwd /home/centre SALA:echo $PS1 SALA: SALA:echo $HOME /home/centre SALA:ls Desktop a2p a2ps aa.txt bin info kill.txt ls.txt programe ps.txt temp SALA:cd programe SALA:ls f1 f2 rc2.conf ros1.c rosall.c rosout.c test SALA:cd test SALA:ls rc1 surse SALA:pwd /home/centre/programe/test SALA:PS1=$ $HOME=/home/centre/programe/test $pwd /home/centre/programe/test $cd $pwd /home/centre/programe/test $cd /home/centre $pwd /home/centre $cd $HOME
34

Initiere in sistemul de operare Unix

Petre Gologan SNTM

$pwd /home/centre/programe/test $echo $HOME /home/centre/programe/test $

Fiecare proces creaza un numar de variabile de environment. Comanda env permite cunoasterea listei de variabile care sunt exportabile.
$ env CPLUS_INCLUDE_PATH=/usr/lib/qt/include:/usr/lib/qt/include MANPATH=/usr/local/man:/usr/man:/usr/X11R6/man:/usr/lib/java/man:/usr/lib/qt/doc/man:/usr/sh are/texmf/man HZ=100 KDE_MULTIHEAD=false HOSTNAME=pc34.inmh.ro TERM=xterm WINDOW_MANAGER=metacity GTK2_RC_FILES=/etc/gtk-2.0/gtkrc:/root/.gtkrc-2.0:/root/.kde/share/config/gtkrc GS_LIB=/root/.fonts GTK_RC_FILES=/etc/gtk/gtkrc:/root/.gtkrc:/root/.kde/share/config/gtkrc HUSHLOGIN=FALSE WINDOWID=4194309 OLDPWD=/home/centre QTDIR=/usr/lib/qt KDE_FULL_SESSION=true USER=root GDK_USE_XFT=1 KDEDIR=/opt/kde SESSION_MANAGER=local/pc34:/tmp/.ICE-unix/1552 T1LIB_CONFIG=/usr/share/t1lib/t1lib.config MINICOM=-c on KONSOLE_DCOP=DCOPRef(konsole-1749,konsole) PATH=/usr/local/bin:/bin:/usr/bin LC_COLLATE=C PWD=/home/centre/programe/test INPUTRC=/etc/inputrc KONSOLE_DCOP_SESSION=DCOPRef(konsole-1749,session-1) JAVA_HOME=/usr/lib/java LANG=en_US PS1=$ PS2=> HOME=/home/centre/programe/test

35

Initiere in sistemul de operare Unix

Petre Gologan SNTM

5.2. Proceduri si parametri In Shell putem sa executam secvente de comenzi si se pot crea si programe complexe. Exemplu
$pwd /home/centre/programe/test $ $cat aa cat: aa: No such file or directory $cat > secv date echo -n directorul de lucru: ; pwd echo -n numarul de fisiere din catalogul de lucru ; ls | wc -l $ls -l total 12 -rw------- 1 centre users 31 2006-01-18 23:01 rc1 -rw-r--r-- 1 centre users 103 2006-01-20 05:28 secv drwxr-xr-x 3 centre users 4096 2006-01-19 00:15 surse $more secv date echo -n directorul de lucru: ; pwd echo -n numarul de fisiere din catalogul de lucru ; ls | wc -l $chmod 755 secv $secv bash: secv: command not found $./secv Fri Jan 20 05:29:27 EET 2006 directorul de lucru:/home/centre/programe/test numarul de fisiere din catalogul de lucru3 $pwd /home/centre/programe/test $vi secv reading secv $ $./secv Fri Jan 20 05:31:25 EET 2006 directorul de lucru:/home/centre/programe/test numarul de fisiere din catalogul de lucru3
36

Initiere in sistemul de operare Unix

Petre Gologan SNTM

$vi secv reading secv $./secv Fri Jan 20 05:32:19 EET 2006 directorul de lucru:/home/centre/programe/test numarul de fisiere din catalogul de lucru:3 $

Procedura prezentata este o procedura elementara fara parametri. Putem defini proceduri cu parametri, apelabili in aceeasi maniera ca si comenzile Unix. Acelasi program secv il modificam in secvp cu parametru (directorul de lucru) :
$cat secvp date echo -n directorul de lucru: $1 echo echo -n numarul de fisiere din catalogul de lucru: ; ls $1 | wc -l $ $sh secvp /home/centre Fri Jan 20 05:45:00 EET 2006 directorul de lucru: /home/centre numarul de fisiere din catalogul de lucru:11 $sh secvp /home Fri Jan 20 05:45:24 EET 2006 directorul de lucru: /home numarul de fisiere din catalogul de lucru:4 $sh secvp /usr/lib Fri Jan 20 05:45:35 EET 2006 directorul de lucru: /usr/lib numarul de fisiere din catalogul de lucru:1310

Prin conventie in interiorul comenzii Shell valorile diferitilor parametri sunt respectiv desemnati prin $1,$2.....$9. Se pot folosi alte variabile standard gestionati de Shell care dau informatii generale despre procese in curs: $* da lista parametrilor comenzii ($1....$9); $# da numarul de parametri ai comenzii apelate(fara $0 care este numele comenzii); $$ da numarul procesului Shell in curs; $! da numarul ultimului proces executat in background; $? da valoarea codului de retour(exit-status) a ultimei comenzi executate;
37

Initiere in sistemul de operare Unix

Petre Gologan SNTM

$ cat >secv2 ps -l echo $# echo $$ echo $* $ $ chmod 755 secv2 $ $ sh secv2 v e r i t y F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 4 S 1002 1764 1751 0 76 0 - 652 wait4 ttyp1 00:00:00 bash 0 S 1002 1857 1764 0 78 0 - 625 wait4 ttyp1 00:00:00 sh 0 R 1002 1858 1857 0 79 0 - 841 ttyp1 00:00:00 ps 6 # numarul de parametri 1857 # numarul procesului in curs verity # lista de parametri $

Un utilizator are posibilitatea de a defini in interiorul unei proceduri variabile locale:


$ cat >secv3 AA=bb echo $AA $ $chmod 755 secv3 $sh secv3 bb $AA=c $sh secv3 bb $echo $AA c $

5.3 Structuri de control


5.3.1 Comanda test Se utilizeaza codul de retur ($? ); daca codul de retur este 0 testul este adevarat.
$pwd /home/centre/programe/test
38

Initiere in sistemul de operare Unix

Petre Gologan SNTM

$ls rc1 secv secv2 secv3 secvp surse $ls -l prog1 ls: prog1: No such file or directory $echo $? 1 $test -f prog1 $echo $? 1 $ls -l secv -rwxr-xr-x 1 centre users 104 2006-01-20 05:32 secv $test -f secv $echo $? 0 $

5.3.2 Selectia if then else format: if < lista de comenzi 1 > then < lista de comenzi 2 > else <lista de comenzi 3 > fi

Lista de comenzi 2 este executata daca codul de retur al listei de comenzi 1(codul de retur al ultimei comenzi din lista) este nul, iar daca nu se executa lista de comenzi 3. 5.3.3 Iteratia for Un utilizator are posibilitatea de a executa o lista de comanda pentru o lista de valori data. for <variabila> do <lista de comenzi> done

39

Initiere in sistemul de operare Unix

Petre Gologan SNTM

S-ar putea să vă placă și