Cum se verifică utilizarea memoriei pe proces pe Linux

How Check Memory Usage Per Process Linux



În zilele noastre, un computer poate rula multe programe simultan. CPU nu are nicio problemă în gestionarea tuturor acestor programe, deoarece CPU-urile au mai multe nuclee pentru a gestiona multi-tasking.

Fiecare dintre aceste programe rulează ca unul sau mai multe procese. Fiecare proces alocă o anumită cantitate de memorie RAM sau memorie. Este esențial ca procesul să funcționeze corect. Dacă un proces nu alocă suficientă memorie RAM sau memorie, atunci procesul nu poate fi creat și programul nu va putea porni.







Deci, una dintre sarcinile de bază pe care le faceți pe computer este să verificați câtă memorie sau memorie RAM (Random Access Memory) utilizează fiecare proces. Deoarece memoria RAM sau memoria computerului dvs. este limitată.



Imaginați-vă un caz în care doriți să rulați un program și eșuează, deoarece nu aveți suficientă memorie. Poate fi unele dintre procesele care utilizează multă memorie de care nu aveți nevoie acum. Puteți ucide sau opri aceste procese pentru a elibera RAM sau memorie, astfel încât să puteți porni programele importante.



În acest articol, vă voi arăta cum să verificați utilizarea memoriei pentru fiecare dintre procesele care rulează pe computerul dvs. Linux. Voi folosi Debian 9 Stretch pentru toată demonstrația din acest articol. Dar ar trebui să funcționeze pe orice distribuție Linux modernă. Să începem.





Puteți utiliza ps comanda pentru a verifica utilizarea memoriei tuturor proceselor de pe Linux. Există o problemă cu această procedură. ps nu vă arată cu adevărat câtă memorie folosește un proces în format KB sau MB, dar vă va arăta câtă memorie este utilizată în procente.

Puteți verifica utilizarea memoriei (în procente) a întregului proces care rulează pe sistemul dvs. de operare Linux cu următoarea comandă:



$ps -saupid, utilizator,%eu eu,comandatopor| fel -b -k3 -r

După cum puteți vedea, toate procesele cu utilizare a memoriei în procente sunt listate în ordine descrescătoare (Procesele care utilizează cea mai mare parte a memoriei sunt listate mai întâi).

Verificarea utilizării memoriei proceselor cu pmap:

Puteți verifica memoria unui proces sau a unui set de procese în format lizibil de către om (în KB sau kilobytes) cu pmap comanda. Tot ce aveți nevoie este PID-ul proceselor de care doriți să verificați utilizarea memoriei.

Să presupunem că doriți să verificați câtă memorie utilizează procesul cu PID 917. Pentru a face asta, aleargă pmap după cum urmează:

$sudopmap917

După cum puteți vedea, memoria totală utilizată de procesul 917 este de 516104 KB sau kilobyte. De asemenea, puteți vedea câtă memorie utilizează bibliotecile și alte fișiere necesare pentru a rula procesul cu PID 917 aici.

Dacă nu vă pasă de câtă memorie utilizează bibliotecile sau alte fișiere dependente, atunci rulați pmap după cum urmează:

$sudopmap917 | coadă -n 1

După cum puteți vedea, numai memoria totală utilizată de procesul cu PID 917 este imprimată pe ecran.

Dacă doriți, puteți filtra în continuare acest lucru cu awk și obțineți doar dimensiunea în KB sau kilobyte. Pentru a face asta, aleargă pmap după cum urmează:

$sudopmap917 | coadă -n 1 | awk „/ [0-9] K / {tipăriți 2 USD}”

După cum puteți vedea, este imprimată doar utilizarea memoriei în KB sau kilobyte.

Acum puteți lista, de asemenea, câtă memorie este utilizată de mai multe procese folosind PID-urile lor pmap după cum urmează:

$sudopmap917 531 | prinderetotal

NOTĂ: Aici 917 și 531 sunt ID-uri de proces sau PID-uri. Puteți pune oricâte PID doriți în acest fel.

Utilizarea pmap pentru a enumera utilizarea memoriei tuturor proceselor în kilobyți:

În această secțiune, vă voi arăta cum să scrieți propriul script shell pentru a enumera utilizarea memoriei tuturor proceselor care rulează pe sistemul dvs. de operare Linux în format lizibil de oameni (kilobyți sau KB).

Mai întâi creați un fișier nou sysmon în directorul curent de lucru cu următoarea comandă:

$atingeresysmon

Acum faceți fișierul executabil cu următoarea comandă:

$chmod+ x sysmon

sysmon este scriptul shell care va afișa toate procesele care rulează PID , PROPRIETAR , MEMORIE (în KB în ordine descrescătoare) și COMANDA . Să începem.

Deschide sysmon script cu editorul de text preferat, voi folosi Kate .

Acum, prima comandă pe care o voi executa îmi va da PID , PROPRIETAR și COMANDA a tuturor proceselor care rulează separate prin simbolul colon (:) și păstrați-l în RAWIN variabil. Apoi buclați prin ieșire și imprimați-o pe ecran.

După cum puteți vedea, obțin rezultatul corect.

Acum este timpul să procesați fiecare linie, să stocați informațiile delimitate de două puncte în variabile separate. Asta am făcut pe linia 7, 8 și 9.

După cum puteți vedea, pot imprima PID , PROPRIETAR și COMANDA în propriul meu format acum.

Acum este timpul să preluați utilizarea memoriei pentru fiecare PID. Linia 10 face exact asta.

După cum puteți vedea, totul funcționează perfect. Acum pot imprima utilizarea memoriei fiecărui proces și în kiloocteți (KB).

Acum nu mai rămâne decât să formatați ieșirea pentru a arăta frumos. Prefer formatul tabelului. Linia 5 imprimă antetul fiecărei coloane a tabelului.

În cele din urmă, am tipărit PID , PROPRIETAR , MEMORIE (în KB) și COMANDA a fiecărui proces într-un format tabelar folosind linia 14.

După cum puteți vedea, funcționează cam bine. Există însă o mică problemă, procesele nu sunt corect sortate în ordine descrescătoare în funcție de utilizarea memoriei.

Pentru a remedia asta, am eliminat sortează -bnr -k3 de la linia 3 și a înfășurat totul într-o funcție shell sysmon_main () . Apoi a lăsat treaba sortării la fel comanda.

Scriptul shell final arată cam așa:

După cum puteți vedea, funcționează excelent.

Acum îl poți muta undeva ca. / usr / bin și executați-l la fel ca alte comenzi după cum urmează:

$sudo mv -vsysmon/usr/a.m

Executarea sysmon :

Vă mulțumim că ați citit acest articol.