This shows you the differences between two versions of the page.
unixmix:capitole:capitol-04 [2014/07/01 12:30] tpopeea |
unixmix:capitole:capitol-04 [2014/09/10 09:46] (current) razvan [Afișare procese] |
||
---|---|---|---|
Line 1: | Line 1: | ||
= Comunicare între resurse = | = Comunicare între resurse = | ||
+ | |||
+ | [[https://docs.google.com/presentation/d/1ugVHI-t18A_9rTiPNCKgCgKF5tdrvvDwlSAQlNzvTwQ/pub?start=false&loop=false&delayms=3000|Slide-uri de prezentare]] | ||
== Tutorial (1) == | == Tutorial (1) == | ||
Line 33: | Line 35: | ||
** Într-un alt terminal rulați comanda ''ls -l /proc/`pidof yes`/fd''. | ** Într-un alt terminal rulați comanda ''ls -l /proc/`pidof yes`/fd''. | ||
*** Ce observați? | *** Ce observați? | ||
- | ** **Atenție!** Comanda yes scrie foarte mult text și este posibil ca dacă nu vă mișcați repede, spațiul de pe mașina virtuală să se ocupe. | ||
*** Dacă se întâmplă acest lucru, ștergeți fișierul ''a'' și repetați task-ul. | *** Dacă se întâmplă acest lucru, ștergeți fișierul ''a'' și repetați task-ul. | ||
<code>Ieșirea standard este redirecționată.</code> | <code>Ieșirea standard este redirecționată.</code> | ||
Line 84: | Line 85: | ||
Pe ecran apare mesajul scris la stderr de eroare.</code> | Pe ecran apare mesajul scris la stderr de eroare.</code> | ||
- | * Rulați comanda ''reboot >& out''. | + | * Rulați comanda ''reboot &> out''. |
** Afișați conținutul fișierului ''out''. | ** Afișați conținutul fișierului ''out''. | ||
*** Ce observați? | *** Ce observați? | ||
<code>Pe ecran nu mai apare eroarea. Aceasta a fost redirecționată împreună cu ieșirea standard în fișierul out.</code> | <code>Pe ecran nu mai apare eroarea. Aceasta a fost redirecționată împreună cu ieșirea standard în fișierul out.</code> | ||
- | * Rulați comanda ''ls >& out''. | + | * Rulați comanda ''ls &> out''. |
** Afișați conținutul fișierului ''out''. | ** Afișați conținutul fișierului ''out''. | ||
*** Ce observați? | *** Ce observați? | ||
<code>Operatorul redirecționează și standard output și standard error.</code> | <code>Operatorul redirecționează și standard output și standard error.</code> | ||
- | * Rulați comanda ''(ls > /dev/tty) >& out''. | + | * Rulați comanda ''(ls > /dev/tty) &> out''. |
*** Ce observați? | *** Ce observați? | ||
<code>Se încearcă redirecționarea erorilor în fișierul out. | <code>Se încearcă redirecționarea erorilor în fișierul out. | ||
Line 167: | Line 168: | ||
** hint: SIGHUP | ** hint: SIGHUP | ||
** ''man bash'' și /trap | ** ''man bash'' și /trap | ||
+ | |||
+ | == Recapitulare == | ||
+ | |||
+ | === 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 ''student''. 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. | ||
+ | |||
+ | 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 10 intrări. Să afișați și antetul oferit de ''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. | ||
+ | |||
+ | === Procese detașate de terminal === | ||
+ | |||
+ | Sunt cazuri în care dorim să pornim procese detașate de terminal. Adică după pornirea procesului să închidem terminalul și procesul să nu fie "omorât" ci să își încheie execuția. Aceste procese sunt echivalente unor procese daemon. | ||
+ | |||
+ | Pentru a detașa un proces de un terminal se folosesc comenzi precum ''nohup'', ''dtach'' și ''disown''. | ||
+ | |||
+ | Folosiți comanda ''wget'' pentru a descărca fișierul ''.torrent'' de [[http://swarm.cs.pub.ro/~razvan/lin-prog.torrent|aici]]. | ||
+ | |||
+ | ==== disown ==== | ||
+ | |||
+ | Porniți un proces ''BitTorrent'' folosind comanda:<code> | ||
+ | btdownloadheadless lin-prog.torrent | ||
+ | </code> | ||
+ | |||
+ | Transferați procesul pornit în starea de rulare în background. Detașați procesul de terminal folosind comanda ''disown''. Închideți terminalul. Investigați prezența procesului în alt terminal. Folosiți comanda ''lsof'' pentru a vedea ce folosește procesul pe post de standard input, standard output și standard error. | ||
+ | |||
+ | Apoi încheiați execuția acelui proces. | ||
+ | |||
+ | ==== nohup ==== | ||
+ | |||
+ | Creați un proces BitTorrent precum cel de mai sus, detașat de terminal, folosind comanda ''nohup''. Închideți terminalul. Investigați prezența procesului în alt terminal. Folosiți comanda ''lsof'' pentru a vedea ce folosește procesul pe post de standard input, standard output și standard error. |