Kako provjeriti upotrebu memorije po procesu na Linuxu

How Check Memory Usage Per Process Linux



Danas računalo može pokrenuti više programa odjednom. CPU nema problema s rukovanjem svim tim programima jer CPU-i imaju više jezgri za rukovanje više zadataka.

Svaki od ovih programa radi kao jedan ili više procesa. Svaki proces dodjeljuje određenu količinu RAM -a ili memorije za sebe. Bitno je da proces pravilno funkcionira. Ako proces ne uspije dodijeliti dovoljno RAM -a ili memorije, tada se proces ne može stvoriti i program se neće moći pokrenuti.







Dakle, jedan od osnovnih zadataka koje radite na svom računalu je provjeriti koliko memorije ili RAM -a (memorije s slučajnim pristupom) svaki proces koristi. Jer, RAM ili memorija vašeg računala su ograničeni.



Zamislite slučaj u kojem želite pokrenuti neki program koji ne uspije jer nemate dovoljno memorije. Možda neki od procesa koriste puno memorije koja vam trenutno ne treba. Ove procese možete ubiti ili zaustaviti kako biste oslobodili RAM ili memoriju, tako da možete pokrenuti važne programe.



U ovom članku ću vam pokazati kako provjeriti upotrebu memorije svakog od procesa koji se izvode na vašem Linux stroju. Za sve demonstracije u ovom članku koristit ću Debian 9 Stretch. No, trebao bi djelovati na svim modernim Linux distribucijama. Započnimo.





Možete koristiti p.s naredba za provjeru korištenja memorije svih procesa na Linuxu. U ovom postupku postoji jedan problem. p.s ne pokazuju vam koliko memorije proces koristi u KB ili MB formatu, ali pokazat će vam koliko se memorije koristi u postocima.

Upotrebu memorije (u postocima) svih procesa koji se izvode na vašem Linux operativnom sustavu možete provjeriti sljedećom naredbom:



$p.s -ilipid, korisnik,%meme,naredbasjekira| vrsta -b -k3 -r

Kao što vidite, svi procesi s postotnom potrošnjom memorije navedeni su opadajućim redoslijedom (prvi su navedeni procesi koji koriste većinu memorije).

Provjera upotrebe memorije procesa s pmap -om:

Možete provjeriti memoriju procesa ili skupa procesa u čitljivom formatu (u KB ili kilobajtima) pomoću pmap naredba. Sve što trebate je PID procesa za koje želite provjeriti upotrebu memorije.

Recimo, želite provjeriti koliko memorije proces s PID 917 koristi. Da biste to učinili, trčite pmap kako slijedi:

$sudopmap917

Kao što vidite, ukupna memorija koju koristi proces 917 iznosi 516104 KB ili kilobajta. Ovdje također možete vidjeti koliko memorije knjižnice i druge datoteke potrebne za pokretanje procesa s PID 917 koriste.

Ako vas ne zanima koliko memorije knjižnice ili druge ovisne datoteke koriste, pokrenite pmap kako slijedi:

$sudopmap917 | rep -n 1

Kao što vidite, na zaslonu se ispisuje samo ukupna memorija koju proces koristi s PID 917.

Ako želite, ovo možete dodatno filtrirati pomoću awk i dobiti samo veličinu u KB ili kilobajtima. Da biste to učinili, trčite pmap kako slijedi:

$sudopmap917 | rep -n 1 | awk ' / [0-9] K / {ispiši $ 2}'

Kao što vidite, ispisuje se samo upotreba memorije u KB ili kilobajtima.

Sada također možete navesti koliko memorije koristi više procesa koristeći svoje PID -ove pmap kako slijedi:

$sudopmap917 531 | zahvatukupno

BILJEŠKA: Ovdje su 917 i 531 ID -ovi procesa ili PID -ovi. Na ovaj način možete postaviti koliko god želite PID -ova.

Korištenje pmap -a za popis korištenja memorije svih procesa u kilobajtima:

U ovom odjeljku pokazat ću vam kako napisati vlastitu ljuskastu skriptu za popis korištenja memorije svih procesa koji se izvode na vašem Linux operativnom sustavu u čitljivom formatu (kilobajti ili KB).

Prvo napravite novu datoteku sysmon u vašem trenutnom radnom direktoriju sa sljedećom naredbom:

$dodirsysmon

Sada učinite datoteku izvršnom sljedećom naredbom:

$chmod+x sysmon

sysmon je skripta ljuske koja će prikazati sve pokrenute procese PID , VLASNIK , MEMORIJA (u KB u opadajućem redoslijedu) i NAREDBA . Počnimo.

Otvori sysmon skriptu s vašim omiljenim uređivačem teksta, koju ću koristiti Kate .

Prva naredba koju ću pokrenuti će mi dati PID , VLASNIK i NAREDBA svih pokrenutih procesa odvojenih znakom dvotočke (:) i spremite ga u RAWIN promjenjiva. Zatim prođite kroz izlaz i ispišite ga na ekranu.

Kao što vidite, dobivam ispravan izlaz.

Sada je vrijeme za obradu svakog retka, spremanje informacija razdvojenih dvotočkom u zasebne varijable. To sam učinio na linijama 7, 8 i 9.

Kao što vidite, mogu tiskati PID , VLASNIK i NAREDBA sada u svom formatu.

Sada je vrijeme za preuzimanje memorije svakog PID -a. Red 10 čini upravo to.

Kao što vidite, sve radi savršeno. Sada mogu ispisati i korištenje memorije svakog procesa u kilobajtima (KB).

Sada je preostalo samo formatirati izlaz kako bi izgledao lijepo. Više volim format tablice. 5. redak ispisuje zaglavlje svakog stupca tablice.

Na kraju sam tiskao PID , VLASNIK , MEMORIJA (u KB) i NAREDBA svakog procesa u tabličnom obliku pomoću retka 14.

Kao što vidite, radi prilično dobro. Postoji mali problem, međutim, procesi nisu pravilno razvrstani u opadajućem redoslijedu prema upotrebi memorije.

Da bih to ispravio, uklonio sam sortiraj -bnr -k3 iz retka 3 i omotao sve u funkciju ljuske sysmon_main () . Zatim je posao sortiranja prepustio vrsta naredba.

Konačna skripta ljuske izgleda otprilike ovako:

Kao što vidite, radi odlično.

Sada ga možete premjestiti na neko mjesto poput /usr/bin i izvršite ga baš kao i ostale naredbe na sljedeći način:

$sudo mv -vsysmon/usr/am

Izvršavanje sysmon :

Hvala što ste pročitali ovaj članak.