Kako preveriti porabo pomnilnika na proces v Linuxu

How Check Memory Usage Per Process Linux



Danes lahko računalnik izvaja več programov hkrati. CPU nima težav pri upravljanju vseh teh programov, ker imajo CPE več jeder za upravljanje večopravilnosti.

Vsak od teh programov deluje kot en ali več procesov. Vsak proces zase nameni določeno količino RAM -a ali pomnilnika. Bistveno je, da proces deluje pravilno. Če procesu ne dodeli dovolj RAM -a ali pomnilnika, ga ni mogoče ustvariti in program se ne bo mogel zagnati.







Torej, ena od osnovnih nalog, ki jih opravljate v računalniku, je preveriti, koliko pomnilnika ali RAM -a (pomnilnik z naključnim dostopom) porabi vsak proces. Ker je RAM ali pomnilnik vašega računalnika omejen.



Predstavljajte si primer, ko želite zagnati program, ki pa ne uspe, ker nimate dovolj pomnilnika. Morda nekateri procesi uporabljajo veliko pomnilnika, ki ga trenutno ne potrebujete. Te procese lahko uničite ali ustavite, da sprostite RAM ali pomnilnik, tako da lahko zaženete pomembne programe.



V tem članku vam bom pokazal, kako preverite porabo pomnilnika za vse procese, ki se izvajajo na vašem računalniku Linux. Za vse predstavitve v tem članku bom uporabljal Debian 9 Stretch. Moral pa bi delovati na vseh sodobnih distribucijah Linuxa. Začnimo.





Uporabite lahko ps ukaz za preverjanje porabe pomnilnika vseh procesov v Linuxu. Pri tem postopku obstaja ena težava. ps v resnici vam ne pokažejo, koliko pomnilnika proces porabi v formatu KB ali MB, vendar vam bo pokazal, koliko pomnilnika se porabi v odstotkih.

Uporabo pomnilnika (v odstotkih) vseh procesov, ki se izvajajo v operacijskem sistemu Linux, lahko preverite z naslednjim ukazom:



$ps -alipid, uporabnik,%meme,ukazsekira| razvrsti -b -k3 -r

Kot lahko vidite, so vsi procesi s porabo pomnilnika v odstotkih navedeni v padajočem vrstnem redu (najprej so navedeni procesi, ki uporabljajo večino pomnilnika).

Preverjanje uporabe procesov v pomnilniku s pmap:

Pomnilnik procesa ali nabora procesov v človeško berljivi obliki (v KB ali kilobajtih) lahko preverite s pmap ukaz. Potrebujete le PID procesov, pri katerih želite preveriti porabo pomnilnika.

Recimo, želite preveriti, koliko pomnilnika uporablja proces s PID 917. Če želite to narediti, zaženite pmap kot sledi:

$sudopmap917

Kot lahko vidite, je skupni pomnilnik, ki ga uporablja proces 917, 516104 KB ali kilobajtov. Tukaj lahko vidite tudi, koliko pomnilnika uporabljajo knjižnice in druge datoteke, potrebne za izvajanje procesa s PID 917.

Če vam ni vseeno, koliko pomnilnika uporabljajo knjižnice ali druge odvisne datoteke, zaženite pmap kot sledi:

$sudopmap917 | rep -n 1

Kot lahko vidite, je na zaslonu natisnjen le celoten pomnilnik, ki ga proces uporablja s PID 917.

Če želite, lahko to dodatno filtrirate z awk in dobite samo velikost v KB ali kilobajtih. Če želite to narediti, zaženite pmap kot sledi:

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

Kot lahko vidite, se natisne samo poraba pomnilnika v KB ali kilobajtih.

Zdaj lahko navedete tudi, koliko pomnilnika porabi več procesov z uporabo njihovih PID -jev pmap kot sledi:

$sudopmap917 531 | oprijemskupaj

OPOMBA: Tu sta 917 in 531 ID -ji procesov ali PID -ji. Na ta način lahko vnesete kolikor želite PID -jev.

Z uporabo pmap za seznam porabe pomnilnika vseh procesov v kilobajtih:

V tem razdelku vam bom pokazal, kako napisati lasten skript lupine, v katerem je navedena poraba pomnilnika vseh procesov, ki se izvajajo v vašem operacijskem sistemu Linux, v berljivi obliki (kilobajti ali KB).

Najprej naredite novo datoteko sysmon v trenutnem delovnem imeniku z naslednjim ukazom:

$dotiksysmon

Zdaj naredite datoteko izvedljivo z naslednjim ukazom:

$chmod+x sysmon

sysmon je lupinski skript, ki prikazuje vse tekoče procese PID , LASTNIK , SPOMIN (v KB v padajočem vrstnem redu) in UKAZ . Začnimo.

Odprite sysmon skript z vašim najljubšim urejevalnikom besedil, ki ga bom uporabil Kate .

Zdaj mi bo dal prvi ukaz PID , LASTNIK in UKAZ vseh izvedenih procesov, ločenih s simbolom dvopičja (:) in ga shranite v RAWIN spremenljivka. Nato prebrskajte izhod in ga natisnite na zaslonu.

Kot vidite, dobim pravilen izhod.

Zdaj je čas, da obdelamo vsako vrstico, podatke, ločene z dvopičjem, shranimo v ločene spremenljivke. To sem naredil na linijah 7, 8 in 9.

Kot vidite, lahko tiskam PID , LASTNIK in UKAZ zdaj v mojem formatu.

Zdaj je čas, da pridobimo uporabo pomnilnika za vsak PID. Vrstica 10 počne ravno to.

Kot vidite, vse deluje odlično. Zdaj lahko porabo pomnilnika za vsak proces natisnem tudi v kilobajtih (KB).

Zdaj je le še treba formatirati izhod, da bo videti lepo. Raje imam obliko mize. 5. vrstica natisne glavo vsakega stolpca tabele.

Končno sem tiskal PID , LASTNIK , SPOMIN (v KB) in UKAZ vsakega procesa v tabelarni obliki z uporabo vrstice 14.

Kot lahko vidite, deluje zelo dobro. Nekaj ​​težav je, vendar procesi niso pravilno razvrščeni po padajočem vrstnem redu glede na porabo pomnilnika.

Da bi to odpravil, sem odstranil razvrsti -bnr -k3 iz vrstice 3 in vse zavila v lupinsko funkcijo sysmon_main () . Nato je nalogo razvrščanja prepustil razvrsti ukaz.

Končni lupinski skript izgleda nekako takole:

Kot vidite, deluje odlično.

Zdaj ga lahko premaknete kamor koli /usr/bin in ga izvedite tako kot druge ukaze na naslednji način:

$sudo mv -vsysmon/usr/zjutraj

Izvajanje sysmon :

Hvala, ker ste prebrali ta članek.