Documente Academic
Documente Profesional
Documente Cultură
Suport laborator 3
Cuprins
1. Managementul proceselor in S.O. Linux ............................................................................................. 1
2. Comanda top ........................................................................................................................................ 4
3. Comanda ps .......................................................................................................................................... 9
4. Comanda pstree ................................................................................................................................. 12
5. Comanda jobs ..................................................................................................................................... 16
6. Închiderea proceselor......................................................................................................................... 17
7. Descriptorul de fișiere ........................................................................................................................ 20
8. Comanda cat ....................................................................................................................................... 20
9. Comanda file....................................................................................................................................... 24
10. Pipe ................................................................................................................................................. 24
11. Execuția unui proces in cadrul execuției altui proces ................................................................... 27
12. Comanda export ............................................................................................................................. 28
13. Comanda grep ................................................................................................................................ 29
Un exemplu de lansare in execuție a unui proces de către alt proces este reprezentat de execuția
unei comenzi in „bash”
La apelarea unei comenzi un proces kernel lansează in execuție procesul asociat comenzii. De
exemplu procesul bash lansează in execuție procesul asociat comenzii pwd folosind funcția
„fork()”. Funcția „fork()” este o funcție utilizata pentru crearea unui nou proces.
Planificatorul unității centrale este o unitate a kernel-ului care selectează următorul proces pentru
a fi executat în continuare, din toate procesele aflate in starea „ready”.
Planificatorul unității centrale alocă intervale de timp procesor, pentru execuția instrucțiunilor. Un
proces in starea „ready” este gata pentru a fi executat așteaptă, si asteapta conform ordinii stabilite
de Planificatorul unității centrale .
Comanda introdusa:
3. Comanda ps
Comanda ps – prescurtare de la process
• afișează o lista a proceselor pornite de utilizator
• fără parametri afișează procesele asociate utilizatorului curent si terminalului deschis
• doua tipuri de parametri: cu cratima / fără cratima
Parametri (selectiv): parametrii au semnificație diferita daca sunt precedați de cratima
-p (doar procese cu id)
-e (toate procesele)
-a (info despre procesele frecvente)
-l (lista lunga cu informații despre proces)
-j (ID de sesiune)
f afișează procesele părinte si fiu
Exemplu de utilizare 1:
Executați următoarele comenzi:
ps
ps -e
Exemplu de utilizare 2:
Executați următoarele comenzi:
ps -le
Exemplu de utilizare 3:
Executați următoarele comenzi:
ps -le
Exemplu de utilizare 4:
Executați următoarele comenzi:
ps f -e
Exemplu de utilizare 5:
Executați următoarele comanda:
ps u
ps ax
Ex 3.2
ps –ef
Ex 3.3
ps aux
Ex 3.4
ps –e -f
4. Comanda pstree
Comanda: pstree afișează un arbore de procese (relația intre procese părinte si fiu)
pstree [-a, --arguments] [-c, --compact]
[-h, --highlight-all, -Hpid, --high‐light-pid pid] [-g] --show-pgids]
[-l, --long] [-n, --numeric-sort] [-p, --show-pids] [-s, --show-parents]
[-u, --uid-changes] [-Z, --security-context]
[-A, --ascii, -G, --vt100, -U, --unicode] [pid, user]
Parametri (selectiv):
-g (afiseaza PGID)
-p (afiseaza PID)
-n (ordoneaza in functie de PID)
-h (afisaza (bold) procesul curent )
In terminale emulate in browser este posibil ca sa nu se afișeze întreg arborele.
Ex 4.1
5. Comanda jobs
Procesele Background:
• rulează fără a interacționa direct cu utilizatorul
• se lansează in execuție cu comanda & la finalul rândului
Comanda jobs afișează procesele Background
Daemons = procese ce rulează neîntrerupt, in background
Procesele sunt identificate prin [job_number]
Ctrl +Z suspenda procesul din forground. Acesta poate fi repornit cu bg in background sau fr in
forground
Comanda Kill %nr_job închide jobul. Comanda Kill -9 %nr_job închide forțat jobul.
Efectuați următoarele operații:
4. Deschideți procesul bash si trimiteți procesul bash in background
5. Verificați ca procesul este in background
6. Închideți procesul bash
7. Închideți procesul bash forțat
Pentru a efectua operațiile de mai sus executați următoarele comenzi (exemplu in fig de mai jos):
1. bash &
2. jobs
3. kill %1
4. jobs
5. bash &
6. kill -9 %1
Exemplu de utilizare 1
6. Închiderea proceselor
Pentru închiderea unui proces cunoscând PID-ul se poate utiliza comanda kill
Sintaxa: kill -signal PID , unde PID este id-ul procesului (obținut de exemplu cu comanda ps) iar
signal este codul pentru semnal.
Se prezinta mai jos câteva coduri de semnal pentru închiderea unor procese:
1 = hangup – se transmite la închiderea de către părinte
2 = Ctrl + C = intrerupt
3 = Ctrl + \ = quit = generează un fișier: core dump
9 = kill = tratat direct de kernel
15 = terminate = semnal default
Pentru închiderea unui proces cunoscând numele se poate utiliza comanda killall
Sintaxa: killall -signal nume_proces
Tabel coduri asociate semnalelor:
Ex 6.1
Ex 6.3
Rezolvare ex 1
Rezolvare ex2
7. Descriptorul de fișiere
„Fișiere” alocate de shell la intrarea in execuție a unui program (I/O stream)
Descriptorul de fișiere are asociate 3 tipuri importante:
• STDIN (cod 0)= zona in care un program așteaptă sa găsească datele de intrare (default:
tastatura)
• STDOUT (cod 1)= zona in care un program trimite datele de ieșire (default: terminal
utilizator)
• STDERR (cod 2) = zona in care un program trimite datele referitoare eroare (default:
terminal utilizator
8. Comanda cat
Comanda cat utilizează o denumire prescurtata a cuvântului „concatenate”. Comanda cat este
utilizata si pentru concatenarea șirurilor de caractere.
Comanda cat este des utilizata ca editor de texte fiind considerata cel mai simplu editor de text
din Linux.
Utilizarea comenzii pentru crearea unui fișier:
“cat > test” creează si permite editarea fișierului test
Se poate întrerupe modul de editare folosind CTRL + d
Utilizarea comenzii pentru vizualizarea conținutului unui fișier:
“cat test” afișează conținutul fișierului test
opțiunea –n afișează nr de linii
Exemplu de utilizare 1 – crearea unui fișier (vezi imaginea de mai jos – exemplul 5)
Următoarea comanda creează un fișier test si adaugă caractere introduse de la tastatura. Pentru a
finaliza utilizați comanda de la tastatura: CTRL + d
cat > test
cat test
cat –n test
#afișează conținutul fișierului test
cat drujba1
#afișează o eroare deoarece fișierul nu exista
Exemplu de utilizare 2 – copierea conținutului unui fișier (vezi img de mai jos- exemplul 5)
cat test > test2
#Conținutul lui test este copiat către test2
Exemplu de utilizare 3 – salvarea erorilor folosind STDERR (cod 2>)
cat drujba 2> log
#Deoarece nu exista fișierul drujba eroarea este copiata in fișierul „log”
Exemplu de utilizare 4
Utilizând >> se adaugă caractere la finalul fișierelor in continuarea caracterelor din fișier
cat >>test
Exemplu de utilizare 5
Ex 8.1
Executați următoarele comenzi si analizați rezultatul:
Ex 8.1.1
cat > test11
in urma execuției comenzii se poate edita fișierul nou creat test. Introduceți cuvântul „Salut”.
Pentru a părăsi modul de editare apăsați „CTRL + D” (end data transmission)
Ex 8.1.2
cat test
in urma execuției comenzii se poate vizualiza, pe ecran, conținutul fișierului test11
Ex 8.1.3
cat >> cat test11
in urma execuției comenzii se pot adaugă șiruri de caractere la finalul caracterelor din fișierul
test11. Adăugați textul „USO”. Pentru a părăsi modul de editare apăsați „CTRL + D” (end data
transmission).
Ex 8.1.4
cat test
in urma execuției comenzii se poate vizualiza, pe ecran, conținutul fișierului test11
Ex 8.1.5
cat drujba
in urma execuției comenzii va fi afișat un mesaj de eroare, deoarece in directorul curent nu exista
fișierul „drujba”
Ex 8.1.6
cat drujba 2> eroare
Atenție la spatii!! In urma execuției comenzii mesajul de eroare afișat anterior va fi salvat intr-un
nou fișier eroare.
Ex 8.1.7
cat eroare
Ce conține fișierul eroare ?
Ex 8.1.8
cat < test
Ce se afișează pe ecran in urma execuției comenzii ? Explicați ținând cont de semnificația
descriptorului „<”
Ex 8.1.9
cat test7 > test8 2>&1
In urma execuției comenzii se generează un mesaj de eroare deoarece nu exista test7. Mesajul de
eroare nu este afișat pe ecran ci este salvat in test8. Deschideți fișierul test8. Ce mesaj observați.
Listați conținutul directorului curent (ls). Identificați fișierul test8 ? Dar test7 ?
9. Comanda file
Pentru a vizualiza informații despre conținutul unui fier se folosește comanda „file”
Exemplu de utilizare 1
file /etc/passwd
10. Pipe
Pipe = mecanism de comunicare intre procese: Inter Process Communication
Este reprezentat prin caracterul “|”
Semnificație: legătura intre STDOUT al unui proces si STDIN al altui proces
„STDOUT | STDIN”
1. Afișați numarul de fișiere din directorul “/” si salvați intr-un fișier. Comanda tee transmite rezultatul
atât către STDOUT cat si către fișierul specificat.
ls | tee lista | wc -l
2. Rularea de procese in cadrul altor procese se paote face utilizând ghilimelele: ‘ ‘ sau structura: $()
echo Ruleaza $(ps ax | wc -l) procese.
3. Pentru gruparea mai multor comenzi se folosește structura ()
( echo Afisaza calendar: ; cal ) | wc -l
4. Se pot selecta primele si ultimele linii dintr-un sir folosind comenzile head si tail. Aceste comenzi
permit selecția numărului de linii afișat pornind de la începutul sau de la finalul unui fișier sau unui
sir primit ca STDIN.
ls | head -3
ls | tail -1
5. Pentru sortarea proceselor in funcție de consumul de resurse si afișarea primelor procese se poate
folosi:
ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head
11. Execuția unui proces in cadrul execuției altui proces
Execuția de procese in cadrul altor procese se poate realiza cu comanda „$()” sau prin utilizarea
de ghilimele simple ``
Exemplu de utilizare 1
echo Ruleaza $(ps ax | wc -l) procese.
Gruparea comenzilor:
Ex 11.1 Executați următoarele comenzi si analizați rezultatul:
Ex 11.1.1
cal ; pwd
; se utilizează pentru separare comenzilor pe aceeași linie
Ex 11.1.2
Exemplu:
Creati o variablia x cu valoarea 4. Exportati variabila x.
Deschideti un nou process bash. Verificati valoarea variabilei in noul process bash. Iesiti din noul process
bash si verificati valoarea variabilei.
Un nou shell ce va rula in shell-ul curent se deschide cu comanda „ bash ”. Acesta este un proces fiu al
shell-ului părinte.
export x=4;
bash; # creati un nou proces bash
echo $x; # comanda este executata in bash-ul creat
x=5;
echo $x;
exit; # iesiti din procesul bash
echo $x
13. Comanda grep
Denumire: GREP = „global/regular expression/print”
Utilizare: caută în fișiere sau în STDIN, șiruri de caractere care corespund unei expresii regulate
date și le scrie către STDOUT.
Optiuni (selectiv):
-c afiseaza numarul de linii unde s-au gasit potriviri
-l afiseaza numai numele fisierelor unde s-au gasit potrivi pe linii
-n numarul liniei unde s-a gasit potrivirea
-v afiseaza liniile in care nu s-au gasit potriviri
-w face o cautare integrala a cuvantului
Meta caractere folosite:
Exemplu de utilizare 1
Identificați cate șiruri de caractere localhost se găsesc in directoratul /etc/hosts
Exemplu de utilizare 2
Poate fi utilizata in corelare cu filtre reprezentate de comenzi intermediare:
1. Schimbați directorul curent cu directorul “/”
2. Afișați numarul de fișiere ce conțin caracterul “t” in denumire, din directorul curent
ls | grep t | wc -l
Exemplu de utilizare 3
Afișați pe ecran doar directoarele ce conțin litera “i” in structura numelui
ls | grep “i”
Exemplu de utilizare 4
Selectați din lista de procese in rulare procesele care au in denumire cel puțin un caracter “s”
ps | grep “s”
Exemplu de utilizare 5
Selectați din lista de procese in rulare procesele care au in denumire litera “sh”
ps | grep “s”
Exemplu de utilizare 6
Schimbați directorul curent cu directorul “/”
Afișați pe ecran doar procesele ce conțin litera “r” urmata de un sir de caractere ce conține
oricâte caractere “t”. Se folosește: *t unde * are semnificația 0 oricâte caractere t.
ps | grep “r*t”
ps | grep “r..t”
Exemplu de utilizare 7
Elimina procesul grep din lista de procese:
ps | grep bash | grep -v grep
Selectați un procese si afișați informații din prima si respectiv a doua colana a rezultatului
comenzii ps:
ps | grep bash | awk ‘{print $1}’
ps | grep bash | awk ‘{print $2}’
Exemplu de utilizare 8
Exemplu de utilizare 9
Exemplu de utilizare 10
Ex 13.1 Executați următoarele comenzi si analizați rezultatul:
Ex 13.1.1
cd /etc
grep „default” networks
Ex 13.1.2
cd /etc
grep ^def networks
Ex 13.1.3
cd /etc
grep [a-d] networks
Ex 13.1.4
cd ~
ls /etc | cat > listing
cat listing
grep ^m listing
Ce conține fișierul listing ? Comparați conținutul fișierului cu conținutul directorului /etc
Ce afișează comanda grep ?
Ex 13.1.5