User Tools

Site Tools


advanced-unix:capitole:capitol-03

Differences

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

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
advanced-unix:capitole:capitol-03 [2016/05/10 07:42]
razvan [Subiecte abordate]
advanced-unix:capitole:capitol-03 [2016/05/10 13:07] (current)
razvan [Folosirea supervisord]
Line 15: Line 15:
  
   * Folosirea eficientă a shell-lui: scurtături readline, shell history (reverse search, ''​Alt+.'',​ ''​%%!!%%''​)   * Folosirea eficientă a shell-lui: scurtături readline, shell history (reverse search, ''​Alt+.'',​ ''​%%!!%%''​)
 +  * În general, nu se prelucrează output-ul comenzii ''​ps''​
 +  * Selecția de informații pe orizonatală (ce procese?) față de selecția pe verticală (ce atribute?)
   * ''​\time''​ vs ''​time''​   * ''​\time''​ vs ''​time''​
   * ''​killall''​ vs ''​pkill''​   * ''​killall''​ vs ''​pkill''​
Line 25: Line 27:
   * ''​nohup'',​ ''​screen'',​ ''​tmux''​   * ''​nohup'',​ ''​screen'',​ ''​tmux''​
   * ''​supervisord''​   * ''​supervisord''​
 +
 ===== Resurse utile ===== ===== Resurse utile =====
  
 +Descărcați arhiva de la adresa http://​swarm.cs.pub.ro/​~razvan/​tmp/​packages.zip. Copiați-o în mașina virtuală, decomprimați-o și instalați pachetele din cadrul acesteia.
 +
 +După ce ați decomprimați arhiva instalați pachetele folosind comezi precum
 +<​code>​
 +sudo dpkg -i sysstat_11.0.1-1_i386.deb
 +</​code>​
 ===== Exerciții ===== ===== Exerciții =====
  
 +==== Demo: Folosirea eficientă a shell-ului ====
 +
 +Folosirea scurtăturilor din biblioteca readline
 +
 +Folosirea ''​Alt+.''​ (sau ''​$_''​)
 +
 +Folosirea istoriei (''​Ctrl+r'',​ ''​%%!!%%''​)
 +
 +==== Demo: Lucru cu procese ====
 +
 +Afișați apoi lista proceselor tuturor utilizatorilor.
 +
 +Obțineți o listare arborescentă a proceselor folosind comanda {{{pstree}}} și apoi obțineți o listare similară (arborescentă) folosind comanda ''​ps''​. (**Indiciu**:​ Căutați după șirul //forest// în pagina de manual a comenzii ''​ps''​).
 +
 +Afisați toate procesele care **nu** apartin utilizatorului {{{root}}}. (**Indiciu**:​ Căutați în pagina de manual după șirul ''​negate''​)
 +
 +Sortați procesele de mai sus în ordinea inversă a memoriei RAM consumate (RSS -- //resident set size//). Adică cele mai consumatoare de memorie procese la început.
 +
 +Din procesele sortate rețineți doar primele 5 intrări. (**Indiciu**:​ Folosiți opțiunea ''​%%--sort%%''​ a comenzii ''​ps''​.
 +
 +==== Afișare procese ====
 +
 +Dorim să afișăm anumite procese într-o anumită ordine.
 +
 +Folosiți ''​ps''​ cu opțiunea corectă pentru a afișa procesele care aparțin utilizatorului ''​training''​. Căutați în pagina de manual după șirul //user//.
 +
 +Pentru procesele de mai sus afișați PID-ul, comanda completă (cale completă cu parametri), timpul de rulare pe procesor, memoria RAM consumată (RSS -- //resident set size//). Pentru a selecta doar anumite atribute ale unui proces folosiți comanda ''​ps''​ cu parametrul ''​-o''​ urmat de opțiunile specifice; urmăriți și pagina de manual.
 +
 +Afișați cele mai consumatoare de memorie 5 procese din sistem care **nu** aparțin utilizatorului ''​root''​.
 +
 +Pentru afișarea de mai sus, folosiți opțiunea de ascundere a header-ului în afișarea comenzii ''​ps''​.
 +
 +Afisați pentru toate procesele utilizatorului ''​training''​ următoarele atribute: pid, ppid, niceness-ul,​ comanda cu ajutorul căreia a fost lansat procesul, numărul de fire de execuție (//​thread//​-uri) din procesul respectiv. Pentru a găsi numărul de fire de execuție (//​thread//​-uri) din procesul respectiv, căutați după șirul //number// în pagina de manual a comenzii ''​ps''​.
 +
 +==== Procesele unui utilizator ====
 +
 +Dorim să lucrăm cu grupuri de procese care țin de un utilizator.
 +
 +Pe un tab nou de terminal adăugăm utilizatorul ''​ana''​ folosind comenzile<​code>​
 +$ sudo su
 +# adduser ana
 +[...]
 +# exit            # sau puteti folosi combinatia de taste Ctrl+d
 +$
 +</​code>​
 +
 +În acel tab nou ne autentificăm ca utilizatorul ''​ana''​ folosind comanda<​code>​
 +$ su - ana
 +</​code>​
 +
 +În cel nou tab, din contul utilizatorului ''​ana'',​ porniți în background mai multe procese: ''​sleep'',​ ''​emacs'',​ ''​gedit''​.
 +
 +Din primul tab, folosiți, ca ''​root'',​ ''​pkill''​ pentru o încheia execuția proceselor utilizatorului ''​ana'';​ 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.
 +
 +==== Procesele unui terminal ====
 +
 +Pe un tab nou de terminal porniți în background procese ca utilizatorul ''​root'',​ ''​student''​ și ''​ana''​.
 +
 +În acel tab aflăm care este identificatorul terminalului curent folosind comanda<​code>​
 +$ tty
 +</​code>​
 +
 +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.
 +
 +==== Demo: Investigarea unui proces ====
 +
 +Folosirea ''​lsof''​ pentru a investiga redirectare și pipe din cadrul unui proces.
 +
 +Folosirea ''​time''​ pentru a afla informații legate de încheierea rulării unui proces.
 +
 +==== Folosirea nohup ====
 +
 +Ne propunem să pornim un tracker de BitTorrent în background, folosind ''​nohup''​. Pentru început porniți tracker-ul în foreground ca să acomodați cu modul său de pornire.
 +
 +<note tip>
 +Pentru pornirea tracker-ului folosiți comanda<​code>​
 +bttrack --dfile bttrack.dfile --port 12345
 +</​code>​
 +</​note>​
 +
 +Închideți tracker-ul (folosind ''​Ctrl+c''​) și porniți-l în background folosind comanda ''​nohup''​. Redirectați output-ul tracker-ului în fișierul cu numele ''​bttrack.log''​.
 +
 +Închideți shell-ul din care ați lansat tracker-ul. Afișați fișierele deschise de procesul tracker folosind comanda ''​lsof''​.
 +
 +Listați serviciile sistemului și verificați că procesul tracker este pornit folosind comanda<​code>​
 +netstat -tlpn
 +</​code>​
 +
 +==== Folosirea tmux ====
 +
 +Porniți într-un ecran ''​tmux''​ un tracker BitTorrent, un server HTTP Python, un editor Vim sau Emacs și încă un ecran pentru comenzi.
 +
 +<note tip>
 +Pentru pornirea ''​tmux''​ folosiți comanda
 +<​code>​
 +tmux
 +</​code>​
 +
 +Pentru a deschide ecrane noi în ''​tmux''​ folosiți combinația de taste ''​Ctrl+b''​ și apoi separat ''​c''​. Pentru a tranzita între ferestre folosiți combinațiile de taste ''​Ctrl+b''​ urmat de ''​n''​ și ''​Ctrl+b''​ urmat de ''​p''​. Pentru a închide un ecran închideți shell-ul folosind ''​Ctrl+d''​ sau ''​exit''​ sau ''​logout''​.
 +
 +Pentru a vă detașa de ''​tmux''​ folosiți combinația de taste ''​Ctrl+b''​ urmat de ''​d''​. Pentru a vă reatașa la ''​tmux''​ folosiți comanda<​code>​
 +tmux attach
 +</​code>​
 +</​note>​
 +
 +<note tip>
 +Pentru a porni un server HTTP Python folosiți comanda
 +<​code>​
 +python -m SimpleHTTPServer
 +</​code>​
 +</​note>​
 +
 +==== Folosirea supervisord ====
 +
 +Folosiți ''​supervisord''​ pentru a porni un tracker de BitTorrent cu ajutorul comenzii ''​bttrack''​.
 +
 +<note tip>
 +Urmăriți exemplele de configurare din link-urile de mai jos:
 +  * https://​www.digitalocean.com/​community/​tutorials/​how-to-install-and-manage-supervisor-on-ubuntu-and-debian-vps
 +  * https://​serversforhackers.com/​monitoring-processes-with-supervisord
  
 +</​note>​
advanced-unix/capitole/capitol-03.1462855358.txt.gz · Last modified: 2016/05/10 07:42 by razvan