Monitorizarea Proceselor Linux: Comanda ps
Descoperiți o imagine clară a proceselor active pe sistemul dumneavoastră Linux folosind comanda `ps`. Identificați procesele după nume, utilizator sau chiar terminal, cu nivelul de detaliu necesar. Vă vom ghida prin pașii esențiali.
Administrarea Proceselor în Linux
Nucleul, elementul central al sistemelor de operare Linux și Unix, gestionează alocarea resurselor, precum RAM și timpul procesorului. Aceste resurse sunt distribuite în timp real, asigurând că fiecare proces primește o parte echitabilă, conform priorității sale.
Uneori, procesele pot deveni blocate, intră în bucle infinite sau nu mai răspund. Pot continua să ruleze, dar consumă excesiv resursele sistemului. În anumite situații, trebuie să oprim aceste procese. Primul pas este identificarea procesului problematic.
Pe de altă parte, poate doriți să explorați procesele active în sistemul dumneavoastră, fără a întâmpina probleme. Comanda `ps` este instrumentul perfect pentru aceasta, oferind o
perspectivă asupra activității curente a computerului.
Comanda `ps` este foarte flexibilă, permițându-vă să obțineți informațiile necesare exact în formatul dorit. Are numeroase opțiuni, dar cele prezentate aici acoperă majoritatea necesităților uzuale. Dacă doriți o explorare mai aprofundată, această introducere va face mai accesibilă înțelegerea paginii de manual.
Afișarea Listei de Procese
Cea mai simplă utilizare a comenzii `ps` este lansarea acesteia fără parametri:
ps
Aceasta afișează procesele inițiate de utilizatorul curent.
Cele patru coloane afișate sunt:
PID: Identificatorul unic al procesului.
TTY: Terminalul la care este conectat utilizatorul.
TIME: Timpul de procesare CPU consumat de proces.
CMD: Comanda care a lansat procesul.
Afișarea Proceselor Tuturor Utilizatorilor
Adăugând opțiunea `-e` (selectează toate procesele), `ps` va afișa procesele pornite de toți utilizatorii, nu doar de cel care a lansat comanda. Deoarece aceasta va genera o listă lungă, vom utiliza `less` pentru a o vizualiza mai ușor.
ps -e | less
Lista de procese este transmisă către `less`.
Observăm mai multe înregistrări, dar tot aceleași patru coloane. Procesele cu `?` în coloana TTY nu au fost lansate dintr-un terminal.
Vizualizarea Ierarhiei Proceselor
Pentru a identifica relațiile dintre procese, putem folosi opțiunea `-H` (ierarhie). Aceasta arată ce procese au lansat alte procese.
ps -eH | less
Indentarea indică procesele parentale și cele secundare.
Pentru o vizualizare mai clară, putem adăuga linii
ASCII pentru a forma un arbore. Utilizăm opțiunea `–forest`.
ps -eH --forest | less
Acum este mai ușor de observat ce procese au lansat alte procese.
Căutarea Proceselor După Nume
Putem folosi `grep` pentru a filtra rezultatele `ps`, căutând procese care conțin un anumit termen în nume. De exemplu, pentru a găsi procesele legate de „firefox”:
ps -e | grep firefox
În acest caz, vedem o singură intrare. Dacă ar exista mai multe instanțe de Firefox, am vedea mai multe linii.
Afișarea Mai Multor Coloane
Pentru a vedea mai multe detalii despre procese, folosim opțiunea `-f` (format complet).
ps -ef | less
Rezultatul include acum mai multe coloane.
Coloanele afișate sunt:
UID: Identificatorul utilizatorului proprietar al procesului.
PID: Identificatorul procesului.
PPID: Identificatorul procesului părinte.
C: Numărul de copii ale procesului.
STIME: Ora de start a procesului.
TTY: Terminalul la care este conectat utilizatorul.
TIME: Timpul CPU consumat de proces.
CMD: Comanda care a lansat procesul.
Opțiunea `-F` (format complet suplimentar) adaugă și mai multe coloane:
ps -eF | less
Acum, este necesară defilarea orizontală pentru a vedea toate coloanele.
Tasta „Săgeată dreapta” deplasează afișajul la stânga.
Coloanele suplimentare sunt:
UID: Identificatorul utilizatorului.
PID: Identificatorul procesului.
PPID: Identificatorul procesului părinte.
C: Numărul de copii ale procesului.
SZ: Mărimea în pagini RAM a imaginii procesului.
RSS: Mărimea setului rezident, memoria fizică neîmpărtășită utilizată de proces.
PSR: Procesorul alocat procesului.
STIME: Ora de start.
TTY: Terminalul asociat procesului.
TIME: Timpul CPU consumat.
CMD: Comanda care a lansat procesul.
Listarea Proceselor După ID
După ce ați găsit ID-ul unui proces, puteți utiliza `ps` cu opțiunea `-p` (selectare după ID proces) pentru a afișa detaliile acestuia.
ps -p 3403
Detaliile procesului sunt afișate.
Se pot specifica mai multe ID-uri de proces, separate prin spații.
Listarea Proceselor După Comandă
Opțiunea `-C` (comandă) permite căutarea proceselor după numele comenzii care le-a lansat. Aceasta diferă de linia de comandă, care poate include căi și parametri.
ps -C shutter
Sunt afișate detaliile procesului `shutter`.
Listarea Proceselor Aparținând unui Utilizator
Pentru a vedea procesele unui anumit utilizator, se folosește opțiunea `-u` (lista de utilizatori):
ps -u mary
Afișează procesele utilizatorului „mary”.
Listarea Proceselor După Terminal
Pentru a vedea procesele asociate unui terminal TTY, folosim opțiunea `-t` (selectare prin TTY). Fără un număr TTY, aceasta afișează procesele asociate cu terminalul curent.
tty
ps -t
Comanda `tty` raportează că terminalul curent este `pts/0`. Procesele listate de `ps -t` sunt asociate cu `pts/0`.
Specificând un număr TTY, `ps` va afișa procesele asociate cu acel TTY.
ps -t 1
De această dată, toate procesele sunt asociate cu terminalul `pts/1`.
Selectarea Coloanelor Afișate
Cu opțiunea `-o` (format), putem alege ce coloane să includem în rezultat. Specificăm coloanele după nume. Lista de nume de coloane se găsește în
pagina de manual în secțiunea „Specificatori de format standard”. În acest exemplu, includem timpul CPU (pcpu) și linia de comandă cu argumente (args).
ps -e -o pcpu,args | less
Rezultatul conține doar coloanele specificate.
Sortarea Rezultatelor După Coloane
Putem sorta rezultatul cu opțiunea `–sort`. De exemplu, pentru a sorta după coloana CPU:
ps -e -o pcpu,args --sort -pcpu| less
Cratima `-` din parametrul de sortare `pcpu` indică o sortare descrescătoare.
Pentru a vedea primele zece procese care consumă cel mai mult CPU, folosim `head`:
ps -e -o pcpu,args --sort -pcpu | head -10
Avem o listă sortată, trunchiată la primele 10 procese.
Adăugând mai multe coloane, putem sorta după mai multe criterii. Adăugăm coloana `pmem`, care reprezintă procentul de memorie folosit de proces. Fără cratimă (sau cu un plus „+”), sortarea este crescătoare.
ps -e -o pcpu,pmem,args --sort -pcpu,pmem | head -10
Prima coloană este sortată descrescător, iar a doua coloană crescător.
Pentru mai multă claritate, adăugăm și coloana PID (identificatorul procesului).
ps -e -o pid,pcpu,pmem,args --sort -pcpu,pmem | head -10
Acum putem identifica ușor procesele.
Oprirea Proceselor După ID
Am prezentat diverse metode de identificare a proceselor. Cunoașterea ID-ului unui proces ne permite să îl oprim folosind comanda `kill`. Pentru a opri procesul cu ID-ul `898`, utilizăm:
sudo kill 898
Dacă totul funcționează corect, procesul se va opri fără mesaje.
Oprirea Proceselor După Nume
Comanda `pkill` permite oprirea proceselor după nume. Asigurați-vă că ați identificat procesul corect! Această comandă va încheia procesul `top`.
sudo pkill top
Din nou, lipsa mesajelor indică succesul operației. Procesul a fost oprit.
Oprirea Mai Multor Procese După Nume
Dacă aveți mai multe instanțe ale unui proces sau un proces a creat mai multe subprocese (de exemplu, Google Chrome), cum le puteți opri? Folosim comanda `killall`.
Avem două instanțe ale procesului `top` rulate:
ps -e | grep top
Le putem opri pe amândouă cu:
sudo killall top
Lipsa mesajului confirmă că ambele procese au fost oprite.
Obținerea unei Vizualizări Dinamice cu `top`
Spre deosebire de `ps`, care oferă o imagine statică, comanda `top` furnizează o vizualizare actualizată în timp real a proceselor. Aceasta este împărțită în două secțiuni: o zonă de tablou de bord și un tabel cu coloane, ambele actualizându-se constant.
Pentru a rula `top`, introducem:
top
Coloanele includ următoarele informații:
PID: Identificatorul procesului.
USER: Proprietarul procesului.
PR: Prioritatea procesului.
NI: Valoarea „nice” a procesului.
VIRT: Memoria virtuală folosită de proces.
RES: Memoria rezidentă utilizată.
SHR: Memoria partajată folosită.
S: Starea procesului. Consultați lista de mai jos.
%CPU: Procentul din timp CPU consumat de la ultima actualizare.
%MEM: Procentul de memorie fizică utilizată.
TIME+: Timpul total de procesor folosit de sarcină, în sutimi de secundă.
COMMAND: Numele comenzii sau linia de comandă. Dacă coloana nu se vede, folosiți tasta „Săgeată dreapta”.
Stările proceselor sunt:
D: Somn neîntrerupt.
R: Rulează.
S: Doarme.
T: Urmărit (oprit).
Z: Zombie.
Apăsați „Q” pentru a ieși din `top`.
Verificarea Înainte de a Opri un Proces
Verificați cu atenție procesul înainte de a-l opri, pentru a evita probleme. Utilizați opțiunile `-H` (ierarhie) și `–forest` pentru a observa eventuale subprocese importante.