Memorija

Kako provjeriti upotrebu memorije po procesu na Linuxu

Kako provjeriti upotrebu memorije po procesu na Linuxu
Danas računalo može istodobno pokretati mnoge programe. CPU nema problema s rukovanjem svim tim programima jer CPU ima više jezgri za obradu više zadataka.

Svaki od ovih programa radi kao jedan ili više procesa. Svaki postupak za sebe izdvaja određenu količinu RAM-a ili memorije. 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 računalu je provjeriti koliko memorije ili RAM-a (Random Access Memory) koristi svaki proces. Jer, RAM ili memorija vašeg računala su ograničeni.

Zamislite slučaj u kojem želite pokrenuti neki program, a on ne uspije jer nemate dovoljno memorije. Možda neki procesi koriste puno memorije koja vam trenutno nije potrebna. Te procese možete ubiti ili zaustaviti kako biste oslobodili RAM ili memoriju, tako da možete pokrenuti svoje važne programe.

U ovom članku pokazat ću vam kako provjeriti upotrebu memorije svakog od procesa koji se izvode na vašem Linux računalu. Za sve demonstracije u ovom članku koristit ću Debian 9 Stretch. Ali to bi trebalo raditi na bilo kojoj modernoj Linux distribuciji. Započnimo.

Provjera upotrebe memorije pomoću ps naredbe:

Možete koristiti p.s naredba za provjeru upotrebe memorije svih procesa na Linuxu. Postoji jedan problem s ovim postupkom. p.s zapravo vam ne pokazuju koliko memorije proces koristi u KB ili MB formatu, ali pokazat će vam koliko memorije se koristi u postocima.

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

$ ps -o pid, korisnik,% mem, naredba ax | razvrstaj -b -k3 -r

Kao što vidite, svi procesi s korištenjem memorije u postocima navedeni su u opadajućem redoslijedu (prvo su navedeni procesi koji koriste većinu memorije).

Provjera upotrebe memorije pomoću memorije pmap:

Memoriju procesa ili skupa procesa možete provjeriti 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 koristi proces s PID 917. Da biste to učinili, trčite pmap kako slijedi:

$ sudo pmap 917

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

Ako vam je svejedno koliko memorije koriste knjižnice ili druge ovisne datoteke, pokrenite pmap kako slijedi:

$ sudo pmap 917 | rep -n 1

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

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

$ sudo pmap 917 | rep -n 1 | awk '/ [0-9] K / ispis $ 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 njihove PID-ove sa pmap kako slijedi:

$ sudo pmap 917 531 | grep ukupno

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

Korištenje pmapa za popis upotrebe memorije svih procesa u kilobajtima:

U ovom odjeljku pokazat ću vam kako da napišete vlastitu skriptu ljuske kako biste popisali upotrebu 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:

$ touch sysmon

Sada napravite datoteku izvršnom pomoću sljedeće naredbe:

$ chmod + x sysmon

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

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

Sada će mi prva naredba koju ću pokrenuti dati PID, VLASNIK i NAREDBA svih pokrenutih procesa odvojenih dvotočkom (:) simbolom i pohranite ga u KIŠNA varijabilna. Zatim prođite kroz izlaz i ispišite ga na ekranu.

Kao što vidite, dobivam ispravan rezultat.

Sada je vrijeme da obradite svaki redak, pohranite podatke razdvojene dvotačkom u zasebne varijable. To sam radio na linijama 7, 8 i 9.

Kao što vidite, mogu tiskati PID, VLASNIK i NAREDBA u mom vlastitom formatu.

Sada je vrijeme da dohvatimo upotrebu memorije svakog PID-a. Linija 10 čini upravo to.

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

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

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

Kao što vidite, djeluje nekako dobro. Postoji mali problem, međutim, procesi nisu pravilno poredani u opadajućem redoslijedu prema korištenju memorije.

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

Završna skripta ljuske izgleda otprilike ovako:

Kao što vidite, djeluje sjajno.

Sada ga možete premjestiti negdje kao / usr / bin i izvršite ga baš kao i ostale naredbe kako slijedi:

$ sudo mv -v sysmon / usr / bin

Izvršenje sysmon:

Hvala što ste pročitali ovaj članak.

Kako razviti igru ​​na Linuxu
Prije deset godina malo je Linux korisnika predviđalo da će njihov omiljeni operativni sustav jednog dana biti popularna platforma za igranje komercij...
Luke komercijalnih igara s otvorenim kodom
Besplatne igre s otvorenim kodom i više platformi mogu se koristiti za igranje starih, kao i nekih prilično nedavnih naslova igara. U ovom će se člank...
Najbolje igre naredbenog retka za Linux
Naredbeni redak nije samo vaš najveći saveznik pri korištenju Linuxa - on također može biti izvor zabave jer ga možete koristiti za igranje mnogih zab...