Cum să utilizați comanda ps pentru a monitoriza procesele Linux

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.