Differences

This shows you the differences between two versions of the page.

Link to this comparison view

gsr:laboratoare:laborator-01 [2016/10/11 13:14]
alexandru.carp
gsr:laboratoare:laborator-01 [2016/10/13 20:27] (current)
alexandru.carp
Line 5: Line 5:
 **Comenzi utile**: ls, ls -l, cd, pwd, vi, chown, chmod, recursive, su, tar, zip, sudo, rm, touch, cp, mv, mkdir, stat, ln, ln -s, who, id, apt-get, apt-cache, man, less, cat, find **Comenzi utile**: ls, ls -l, cd, pwd, vi, chown, chmod, recursive, su, tar, zip, sudo, rm, touch, cp, mv, mkdir, stat, ln, ln -s, who, id, apt-get, apt-cache, man, less, cat, find
  
-===== Folosire man/less cu căutare =====+===== 01. Folosire man/less cu căutare =====
  
 Pentru documentarea într-un sistem Linux folosim pagini de manual. De exemplu pentru accesarea paginii de manual a comenzii ''​ls''​ folosim comanda ''​man'':<​code>​ Pentru documentarea într-un sistem Linux folosim pagini de manual. De exemplu pentru accesarea paginii de manual a comenzii ''​ls''​ folosim comanda ''​man'':<​code>​
Line 15: Line 15:
 </​code>​ </​code>​
  
-Paginile de manual au secțiuni. Astfel dacă dorim să accesăm pagina de manual a fișierului ''/​etc/​passwd''​ folosim comanda<​code>​+Paginile de manual au secțiuni. Pentru a vedea care este semnificatia fiecarei sectiuni, consultati comanda <​code>​$ man man</​code>​. Astfel dacă dorim să accesăm pagina de manual a fișierului ''/​etc/​passwd''​ folosim comanda<​code>​
 $ man 5 passwd $ man 5 passwd
 </​code>​ </​code>​
Line 68: Line 68:
  
 **Bonus**: Folosiți o construcție de tipul ''​stat ... | paste ... | bc''​ pentru a calcula spațiul ocupat de fișierele cu extensia din directorul ''/​etc''​ cu extensia ''​*.conf''​. Indicație: Urmăriți și postarea de [[http://​stackoverflow.com/​a/​451204|aici]]. **Bonus**: Folosiți o construcție de tipul ''​stat ... | paste ... | bc''​ pentru a calcula spațiul ocupat de fișierele cu extensia din directorul ''/​etc''​ cu extensia ''​*.conf''​. Indicație: Urmăriți și postarea de [[http://​stackoverflow.com/​a/​451204|aici]].
-===== Investigarea ierarhiei de fișiere ​=====+ 
 +===== 02. Fisiere ===== 
 + 
 +==== a) Investigarea ierarhiei de fișiere ====
  
 Ierarhia de fișiere în Unix/Linux este dată de [[http://​www.pathname.com/​fhs/​|Filesystem Hierarchy Standard]]. Fiecare director din vârful ierarhiei are un rol predeterminat. Un pachet instalat în sistemul curent, duce la actualizarea sistemului de fișiere în diferite locuri ale ierarhiei. Ierarhia de fișiere în Unix/Linux este dată de [[http://​www.pathname.com/​fhs/​|Filesystem Hierarchy Standard]]. Fiecare director din vârful ierarhiei are un rol predeterminat. Un pachet instalat în sistemul curent, duce la actualizarea sistemului de fișiere în diferite locuri ale ierarhiei.
Line 81: Line 84:
 Comanda ''​which''​ urmată de o comandă afișează calea completă a comenzii respective. Comanda ''​which''​ urmată de o comandă afișează calea completă a comenzii respective.
  
-==== Exerciții ​====+=== Exerciții ===
  
 Identificați componentele din sistemul de fișiere care aparțin pachetului ''​grub-common''​. Verificați ce tip de fișiere sunt și ce reprezintă. Identificați componentele din sistemul de fișiere care aparțin pachetului ''​grub-common''​. Verificați ce tip de fișiere sunt și ce reprezintă.
Line 92: Line 95:
 pentru a instala pachetul ''​zoo''​. Investigați în ierarhia ''/​var''​ unde a fost descărcat pachetul ''​.deb''​ pentru a fi apoi instalat în sistem. **Indicație**:​ Porniți de la directorul ''/​var/​lib''​. pentru a instala pachetul ''​zoo''​. Investigați în ierarhia ''/​var''​ unde a fost descărcat pachetul ''​.deb''​ pentru a fi apoi instalat în sistem. **Indicație**:​ Porniți de la directorul ''/​var/​lib''​.
  
-====Căi relative și absolute ​=====+==== b) Căi relative și absolute ====
  
 Căile în sistemul de fișiere pot fi abolute (încep de la directorul rădăcină) sau pot fi relative (sunt relative la directorul curent). Căile în sistemul de fișiere pot fi abolute (încep de la directorul rădăcină) sau pot fi relative (sunt relative la directorul curent).
Line 107: Line 110:
   * ''​./​a.out''​   * ''​./​a.out''​
  
-==== Exerciții ​====+=== Exerciții ===
  
 <​note>​ <​note>​
Line 120: Line 123:
  
 Folosiți o cale relativă și o cale absolută pentru a afișa ultimele 10 linii din fișierul de jurnalizare a sistemului (''​syslog''​). **Indicație**:​ Fișierul se găsește în ''/​var/​log''​ iar comanda pentru afișarea ultimelor 10 linii este ''​tail''​. Folosiți o cale relativă și o cale absolută pentru a afișa ultimele 10 linii din fișierul de jurnalizare a sistemului (''​syslog''​). **Indicație**:​ Fișierul se găsește în ''/​var/​log''​ iar comanda pentru afișarea ultimelor 10 linii este ''​tail''​.
-====Globbing, văzut fișiere care corespund unei expresii ​=====+ 
 +==== c) Globbing, văzut fișiere care corespund unei expresii ====
  
 Cu ajutorul globbing-ului putem să vedem fișiere care corespund unui șir. De principiu cea mai uzuală folosire este pentru sistemul de fișiere și acolo caracterul cel mai folosit este ''​*''​ (steluță, //star//) numit și wildcard. Cu ajutorul globbing-ului putem să vedem fișiere care corespund unui șir. De principiu cea mai uzuală folosire este pentru sistemul de fișiere și acolo caracterul cel mai folosit este ''​*''​ (steluță, //star//) numit și wildcard.
  
-==== Exerciții ​====+=== Exerciții ===
  
 Folosiți un glob pentru a afișa toate fișierele cu extensia ''​.gz''​ din directorul ''/​var/​log/''​. Folosiți un glob pentru a afișa toate fișierele cu extensia ''​.gz''​ din directorul ''/​var/​log/''​.
Line 134: Line 138:
 Afișați toate fișierele cu extensia ''​.conf''​ din toate primele subdirectoare din ''/​etc''​ (adică din primul nivel de subdirectoare:​ ''​init/'',​ ''​systemd/'',​ ''​security/''​. Afișați toate fișierele cu extensia ''​.conf''​ din toate primele subdirectoare din ''/​etc''​ (adică din primul nivel de subdirectoare:​ ''​init/'',​ ''​systemd/'',​ ''​security/''​.
  
-===== Vim Sk1llz ===== +==== d) Crearea unei ierarhii locale ====
- +
-<note important>​ +
-Dacă exercițiile de mai jos vă iau mai mult timp decât este indicat, să faceți o trecere prin tutorialul de Vim: adică să porniți comanda ''​vimtutor''​. +
- +
-Puteți să ignorați scrierea cu diacritice. +
-</​note>​ +
- +
-În **30 de secunde**, porniți Vim pentru a crea/edita fișierul ''​poveste.txt'',​ scrieți textul %%"A fost o dată ca niciodată că dacă nu ar fi nu s-ar povesti."​%% și salvați textul și părăsiți editorul. +
- +
-În **120 de secunde**, porniți Vim scrieți textul de mai sus în fișierul ''​capitolul-01.txt''​ și apoi tot în Vim (fără a părăsi editorul scrieți textul %%"Va urma"​%% în fișierul ''​capitolul-02.txt''​ și textul %%"​Sfârșit"​%% în fișierul ''​capitolul-03.txt''​. +
- +
-Descărcați fișierul de mai jos (''​mesaj.txt''​și, în **180 de secunde** editați-l în Vim pentru a obține forma de dedesubt (''​mesaj-modificat.txt''​). Analizați ce trebuie să faceți înainte de a contoriza editarea. +
- +
-<file txt mesaj.txt>​ +
-====== Împărțire semigrupe ====== +
- +
-Pentru împărțirea orelor de laborator de GSR, vom deschide două thread-uri pe [[http://​cs.curs.pub.ro/​2015/​mod/​forum/​view.php?​id=654|forumul de discuții generale]]. Pe fiecare thread vă veți putea înscrie la unul dintre cele două intervale de laborator:​ +
-  * joi, 16:​00-18:​00,​ sala EG106 +
-  * joi, 20:​00-22:​00,​ sala EG106 +
- +
-Vom deschide thread-urile miercuri, 14 octombrie 2015, la ora 12:30 (la prânz). +
- +
-Limita de locuri pe laborator este de 18 persoane. Va fi "first post, first served"​. +
-</​file>​ +
- +
-<file txt mesaj-modificat.txt>​ +
---- Împărțire semigrupe +
- +
-Pentru împărțirea orelor de laborator de GSR, vom deschide două fire de discuție pe forumul de discuții generale. Pe fiecare thread vă veți putea înscrie la unul dintre cele două intervale de laborator:​ +
-  * vineri, 16-12, sala EG306 +
-  * vineri, 20-22, sala EG306 +
- +
-Vom deschide thread-urile miercuri, 14 noiembrie 2015, la ora 19:30 (pe seară). +
- +
-Limita de locuri pe laborator este de 12 persoane. Va fi "​primul venit, primul servit"​. +
-</​file>​ +
- +
-În **30 de secunde** copiați codul de [[https://​github.com/​razvand/​snippets/​blob/​master/​mmap/​dual-mapping.c|aici]] în Vim într-un fișier numit ''​dual-mapping.c''​ și asigurând indentarea codului. +
-===== Crearea unei ierarhii locale ​=====+
  
 Creați ierarhia de mai jos într-un director cu numele ''​music/''​. Creați ierarhia de mai jos într-un director cu numele ''​music/''​.
Line 204: Line 169:
 `-- slayer `-- slayer
 </​code>​ </​code>​
-====Actualizarea ierarhiei ​=====+ 
 +==== e) Actualizarea ierarhiei ====
  
 Actualizați ierarhia de mai sus astfel: Actualizați ierarhia de mai sus astfel:
Line 214: Line 180:
   * Ștergeți întreg directorul ''​hammerfall''​.   * Ștergeți întreg directorul ''​hammerfall''​.
   * Schimbați numele directorului ''​ac_dc''​ în ''​AC DC''​ (numele conține spațiu).   * Schimbați numele directorului ''​ac_dc''​ în ''​AC DC''​ (numele conține spațiu).
-====Schimbat de permisiuni pe fișiere ​=====+ 
 +==== f) Schimbat de permisiuni pe fișiere ====
  
 Adăugați în sistem utilizatorii ''​ana'',​ ''​bogdan''​ și grupul ''​mayhem''​ și realizați următorele actualizări în ierarhia de mai sus: Adăugați în sistem utilizatorii ''​ana'',​ ''​bogdan''​ și grupul ''​mayhem''​ și realizați următorele actualizări în ierarhia de mai sus:
Line 223: Line 190:
   * Permisiunile pe fișierul ''​dave''​ sa permită lui ''​bogdan''​ citire și scriere (fără a modifica ownership).   * Permisiunile pe fișierul ''​dave''​ sa permită lui ''​bogdan''​ citire și scriere (fără a modifica ownership).
   * Fișierul ''​bon''​ să aiba permisiuni de execuție pentru toți utilizatorii.   * Fișierul ''​bon''​ să aiba permisiuni de execuție pentru toți utilizatorii.
-====Folosirea find =====+ 
 +==== g) Folosirea find ====
  
 Folosiți comanda ''​find''​ pentru a parcurge ierarhia creată mai sus. Folosiți comanda ''​find''​ pentru a parcurge ierarhia creată mai sus.
Line 231: Line 199:
 Folosiți comanda ''​find''​ pe ierarhia de mai sus pentru a afișa doar intrările care încep cu litera ''​a''​. Folosiți comanda ''​find''​ pe ierarhia de mai sus pentru a afișa doar intrările care încep cu litera ''​a''​.
  
-====Scenariu de schimbare permisiuni ====+/* 
 +==== h) Scenariu de schimbare permisiuni ====
  
 Le dăm o arhivă cu mai multe fișiere, o bușesc cu 777 și apoi să repare; un scenariu complet de schimbare de permisiuni și ownership; o arhivă cu DokuWiki deja configurat Le dăm o arhivă cu mai multe fișiere, o bușesc cu 777 și apoi să repare; un scenariu complet de schimbare de permisiuni și ownership; o arhivă cu DokuWiki deja configurat
 +*/
  
-===== Investigarea proceselor sistemului ​=====+===== 03. Vim Sk1llz ​=====
  
-=== Afișare procese ===+<note important>​ 
 +Dacă exercițiile de mai jos vă iau mai mult timp decât este indicat, să faceți o trecere prin tutorialul de Vim: adică să porniți comanda ''​vimtutor''​. 
 + 
 +Puteți să ignorați scrierea cu diacritice. 
 +</​note>​ 
 + 
 +În **30 de secunde**, porniți Vim pentru a crea/edita fișierul ''​poveste.txt'',​ scrieți textul %%"A fost o dată ca niciodată că dacă nu ar fi nu s-ar povesti."​%% și salvați textul și părăsiți editorul. 
 + 
 +În **120 de secunde**, porniți Vim scrieți textul de mai sus în fișierul ''​capitolul-01.txt''​ și apoi tot în Vim (fără a părăsi editorul scrieți textul %%"Va urma"​%% în fișierul ''​capitolul-02.txt''​ și textul %%"​Sfârșit"​%% în fișierul ''​capitolul-03.txt''​. 
 + 
 +Descărcați fișierul de mai jos (''​mesaj.txt''​) și, în **180 de secunde** editați-l în Vim pentru a obține forma de dedesubt (''​mesaj-modificat.txt''​). Analizați ce trebuie să faceți înainte de a contoriza editarea. 
 + 
 +<file txt mesaj.txt>​ 
 +====== Împărțire semigrupe ====== 
 + 
 +Pentru împărțirea orelor de laborator de GSR, vom deschide două thread-uri pe [[http://​cs.curs.pub.ro/​2015/​mod/​forum/​view.php?​id=654|forumul de discuții generale]]. Pe fiecare thread vă veți putea înscrie la unul dintre cele două intervale de laborator:​ 
 +  * joi, 16:​00-18:​00,​ sala EG106 
 +  * joi, 20:​00-22:​00,​ sala EG106 
 + 
 +Vom deschide thread-urile miercuri, 14 octombrie 2015, la ora 12:30 (la prânz). 
 + 
 +Limita de locuri pe laborator este de 18 persoane. Va fi "first post, first served"​. 
 +</​file>​ 
 + 
 +<file txt mesaj-modificat.txt>​ 
 +--- Împărțire semigrupe 
 + 
 +Pentru împărțirea orelor de laborator de GSR, vom deschide două fire de discuție pe forumul de discuții generale. Pe fiecare thread vă veți putea înscrie la unul dintre cele două intervale de laborator:​ 
 +  * vineri, 16-12, sala EG306 
 +  * vineri, 20-22, sala EG306 
 + 
 +Vom deschide thread-urile miercuri, 14 noiembrie 2015, la ora 19:30 (pe seară). 
 + 
 +Limita de locuri pe laborator este de 12 persoane. Va fi "​primul venit, primul servit"​. 
 +</​file>​ 
 + 
 +În **30 de secunde** copiați codul de [[https://​github.com/​razvand/​snippets/​blob/​master/​mmap/​dual-mapping.c|aici]] în Vim într-un fișier numit ''​dual-mapping.c''​ și asigurând indentarea codului. 
 + 
 +===== 04. Procese ===== 
 + 
 +==== a) Afișare procese ​====
  
 Dorim să afișăm anumite procese într-o anumită ordine. Dorim să afișăm anumite procese într-o anumită ordine.
Line 249: Line 259:
 Din procesele sortate rețineți doar primele 10 intrări. Să afișați și antetul oferit de ''​ps''​. Din procesele sortate rețineți doar primele 10 intrări. Să afișați și antetul oferit de ''​ps''​.
  
-=== Procesele unui utilizator ===+==== b) Procesele unui utilizator ​====
  
 Dorim să lucrăm cu grupuri de procese care țin de un utilizator. Dorim să lucrăm cu grupuri de procese care țin de un utilizator.
Line 273: Line 283:
 </​note>​ </​note>​
  
-=== Procesele unui terminal ===+==== c) Procesele unui terminal ​====
  
 Pe un tab nou de terminal porniți în background procese ca utilizatorul ''​root'',​ ''​student''​ și ''​ana''​. Pe un tab nou de terminal porniți în background procese ca utilizatorul ''​root'',​ ''​student''​ și ''​ana''​.
Line 283: Line 293:
 Din primul tab, folosiți, ca ''​root'',​ ''​pkill''​ pentru o încheia execuția proceselor de pe al doilea terminal; adică rulați ''​%%sudo pkill ...%%''​ (cu ce opțiuni sunt utile). Este posibil să fie necesar să folosiți semnalul ''​SIGKILL''​ ca să fie garantată încheierea execuției. Din primul tab, folosiți, ca ''​root'',​ ''​pkill''​ pentru o încheia execuția proceselor de pe al doilea terminal; adică rulați ''​%%sudo pkill ...%%''​ (cu ce opțiuni sunt utile). Este posibil să fie necesar să folosiți semnalul ''​SIGKILL''​ ca să fie garantată încheierea execuției.
  
-==== Investigarea descriptorilor de fișiere ====+===== 05. Investigarea descriptorilor de fișiere ​=====
  
-=== lsof ===+==== a) lsof ====
  
 Ne interesează pentru un proces dat care sunt fișierele deschise de un proces, sau, de fapt, descriptorii de fișier deschiși de un proces. De exemplu, dacă dorim să identificăm descriptorii de fișier deschiși de shell-ul curent folosim comanda<​code>​ Ne interesează pentru un proces dat care sunt fișierele deschise de un proces, sau, de fapt, descriptorii de fișier deschiși de un proces. De exemplu, dacă dorim să identificăm descriptorii de fișier deschiși de shell-ul curent folosim comanda<​code>​
Line 301: Line 311:
 Folosiți ''​lsof''​ pentru a investiga și descriptorii deschiși de procesul ''​init''​. Folosiți ''​lsof''​ pentru a investiga și descriptorii deschiși de procesul ''​init''​.
  
-=== Investigarea redirectării ===+==== b) Investigarea redirectării ​====
  
 Putem folosi ''​lsof''​ pentru a verifica modul în care redirectarea afectează descriptorii unui proces. Putem folosi ''​lsof''​ pentru a verifica modul în care redirectarea afectează descriptorii unui proces.
Line 320: Line 330:
 Folosim comanda ''​lsof''​ anterioară pentru a investiga descriptorii procesului ''​sleep''​. Putem observa unde pointează descriptorii standard de fișier pentru procesul pornit. Folosim comanda ''​lsof''​ anterioară pentru a investiga descriptorii procesului ''​sleep''​. Putem observa unde pointează descriptorii standard de fișier pentru procesul pornit.
  
-=== Investigarea operatorului pipe ===+==== c) Investigarea operatorului pipe ====
  
 Folosiți ''​lsof''​ pentru a investiga descriptorii deschiși de cele trei procese ''​sleep''​ din cadrul comenzii<​code>​ Folosiți ''​lsof''​ pentru a investiga descriptorii deschiși de cele trei procese ''​sleep''​ din cadrul comenzii<​code>​
Line 328: Line 338:
 Urmăriți ce înseamnă operatorul pipe (''​|''​) si ce impact are asupra descriptorilor de fișier ai unui proces. Urmăriți ce înseamnă operatorul pipe (''​|''​) si ce impact are asupra descriptorilor de fișier ai unui proces.
  
-=== netstat și ss ===+==== d) netstat și ss ====
  
 Pentru a determina sockeții deschiși în cadrul sistemului folosim comanda ''​netstat''​. Modurile uzuale de lucru ale comenzii sunt:<​code>​ Pentru a determina sockeții deschiși în cadrul sistemului folosim comanda ''​netstat''​. Modurile uzuale de lucru ale comenzii sunt:<​code>​
Line 341: Line 351:
 Urmăriți și din output-ul comenzilor și din pagina de manual ce efect au fiecare dintre comenzile de mai sus. Urmăriți și din output-ul comenzilor și din pagina de manual ce efect au fiecare dintre comenzile de mai sus.
  
-=== netcat ===+==== e) netcat ​====
  
 Dacă dorim deschiderea unui server/​serviciu pe sistemul curent putem folosi comanda<​code>​ Dacă dorim deschiderea unui server/​serviciu pe sistemul curent putem folosi comanda<​code>​
Line 357: Line 367:
 Investigați folosind comanda ''​netstat''​ sau comanda ''​s''​ conexiunea astfel deschisă. Investigați folosind comanda ''​netstat''​ sau comanda ''​s''​ conexiunea astfel deschisă.
  
-=== SimpleHTTPServer ===+==== f) SimpleHTTPServer ​====
  
 Pachetul ''​python''​ vine cu un server web simplu care poate fi pornit pentru a servi fisiere din directorul curent. Pentru pornirea sa folositi comanda<​code>​ Pachetul ''​python''​ vine cu un server web simplu care poate fi pornit pentru a servi fisiere din directorul curent. Pentru pornirea sa folositi comanda<​code>​
Line 364: Line 374:
  
 Investigati folosind ''​netstat''​ si ''​s''​ portul pe care asculta conexiuni (afisat si la pornirea sa) si pointati browser-ul la URL-ul http://​localhost:​8000/​ pentru a putea urmari fisierele servite. Un coleg poate sa se conecteze la acest server web folosind in loc de ''​localhost''​ adresa IP a statiei voastre. Investigati folosind ''​netstat''​ si ''​s''​ portul pe care asculta conexiuni (afisat si la pornirea sa) si pointati browser-ul la URL-ul http://​localhost:​8000/​ pentru a putea urmari fisierele servite. Un coleg poate sa se conecteze la acest server web folosind in loc de ''​localhost''​ adresa IP a statiei voastre.
-==== Obținerea unui clip de pe YouTube din Firefox ====+ 
 +/* 
 + 
 +==== g) Obținerea unui clip de pe YouTube din Firefox ====
  
 <​note>​ <​note>​
Line 388: Line 401:
 pentru a porni clipul. pentru a porni clipul.
  
-==== Investigarea dinamică a unui proces ====+*/
  
-=== strace ​==+===== 06. Instalat, dezinstalat de pachete =====
- +
-Comanda ''​strace''​ (//system call trace//) ne este utilă pentru a investiga ce apeluri de sistem efectuează o comandă dată și ce parametri folosește. +
- +
-De exemplu, dacă dorim să urmărim apelurile de sistem efectuate de comanda ''​ls''​ folosim comanda<​code>​ +
-strace ls +
-</​code>​ +
- +
-Output-ul fiind destul de vast, ne preocupă să obținem doar informații despre fișierele deschide. Pentru aceasta folosim opțiunea ''​-e''​ a comenzii ''​strace''​ cu ajutorul căreia filtrăm tipuri de operații. În cazul de față folosim comanda<​code>​ +
-strace -e file ls +
-</​code>​ +
- +
-Observăm fișierele deschise. +
- +
-Pentru a vedea diferența între comenzile ''​ls''​ și ''​ls -l''​ folosim comanda<​code>​ +
-strace -e file ls -l +
-</​code>​ +
- +
-Observăm că acum deschise și fișiere precum ''/​etc/​passwd''​ și ''/​etc/​group''​ pentru a determina username-ul și grupul aferent UID-ului și GID-ului din fișier. +
- +
-=== Informații despre rețea === +
- +
-Comanda<​code bash> +
-netstat -s +
-</​code>​ +
-afișează informații statistice despre pachetele sistemului. Ne interesează să știm de unde obține comanda respectivă informațiile. +
- +
-Rulați comanda<​code bash> +
-strace -e open netstat -s +
-</​code>​ +
-pentru a afla ce fișiere deschide comanda la rulare. +
- +
-Care fișier este citit pentru a afla informații despre pachetele primite (//packets received//​)?​ Vizualizați acel fișier (luați-o pe încercate). +
- +
-=== Atașarea la un proces === +
- +
-''​strace''​ permite investigarea unui proces aflat deja în rulare. Numim acest lucru atașarea la un proces. Putem astfel investiga apelurile de sistem efectuate de un proces aflat în rulare și diagnostica anumite probleme ale acestuia. Pentru a ne putea atașa la un proces avem nevoie de PID-ul acestuia. +
- +
-Deschideți două tab-uri de terminal (adică să aveți două deschise; dacă aveți deja unul mai deschideți încă unul). +
- +
-<note tip> +
-Pentru a deschide un tab nou de terminal în GNOME Terminal puteți folosi combinația de taste ''​Ctrl+Shift+t''​. +
-</​note>​ +
- +
-Într-unul dintre tab-uri aflați PID-ul procesului curent (a shell-ului) folosind comanda<​code>​ +
-echo $$ +
-</​code>​ +
- +
-Pentru a investiga shell-ul, din celălalt tab folosim comanda<​code>​ +
-strace -p <​PID>​ +
-</​code>​ +
-unde ''<​PID>''​ este PID-ul shell-ului determinat mai sus. +
- +
-Acum dacă în celălalt shell rulăm comenzi vom vedea ce se întâmplă în cadrul shell-ului. +
- +
-Observăm că se folosește apelul de sistem ''​clone''​ pentru a crea un nou proces, dar nu apare apelul de sistem ''​execve''​ care înlocuiește imaginea de proces. Pentru a vedea aceste apeluri de sistem trebuie să precizăm comenzii ''​strace''​ să investigheze și procesele copil folosind opțiunea ''​-f''​ (de la ''​follow children''​). Astfel, vom putea investiga folosind comanda<​code>​ +
-strace -f -p <​PID>​ +
-</​code>​ +
- +
-Dacă dorim să vedem doar operațiile cu procese și fișiere, de exemplu, vom folosi pentru investigație comanda<​code>​ +
-strace -f -e process,​file -p <​PID>​ +
-</​code>​ +
- +
-===== Instalat, dezinstalat de pachete =====+
  
 Dezinstalați pachetul ''​zoo''​ instalat anterior. Folosiți opțiunea de ''​purge''​ pentru a șterge și fișierele de configurare. Dezinstalați pachetul ''​zoo''​ instalat anterior. Folosiți opțiunea de ''​purge''​ pentru a șterge și fișierele de configurare.
Line 460: Line 410:
  
 Folosiți comanda ''​%%dpkg -L ...%%''​ pentru a afișa conținutul celor 2 pachete proaspăt instalate. Folosiți comanda ''​%%dpkg -L ...%%''​ pentru a afișa conținutul celor 2 pachete proaspăt instalate.
 +
 ===== Bonus: find avansat ===== ===== Bonus: find avansat =====
  
Line 469: Line 420:
   - Folosiți ''​find''​ pentru a afișa fișierele din ierarhia din subdirectoare care **nu** au extensia ''​.sh''​. (Hint: ''​OPERATORS''​ în pagina de manual)   - Folosiți ''​find''​ pentru a afișa fișierele din ierarhia din subdirectoare care **nu** au extensia ''​.sh''​. (Hint: ''​OPERATORS''​ în pagina de manual)
   - Folosiți ''​find''​ pentru a afișa fișierele din ierarhia din subdirectoare cu drept de execuție care **nu** au extensia ''​.sh''​. (Hint: ''​-perm''​)   - Folosiți ''​find''​ pentru a afișa fișierele din ierarhia din subdirectoare cu drept de execuție care **nu** au extensia ''​.sh''​. (Hint: ''​-perm''​)
 +
 ===== Bonus: dpkg ===== ===== Bonus: dpkg =====
  
gsr/laboratoare/laborator-01.1476180887.txt.gz · Last modified: 2016/10/11 13:14 by alexandru.carp
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0