Jak zkontrolovat využití paměti podle procesu v systému Linux

How Check Memory Usage Per Process Linux

V dnešní době může počítač spouštět mnoho programů najednou. CPU nemá žádný problém se zpracováním všech těchto programů, protože CPU má více jader pro zpracování více úkolů.

Každý z těchto programů běží jako jeden nebo více procesů. Každý proces pro sebe alokuje určité množství paměti RAM nebo paměti. Je nezbytné, aby proces správně fungoval. Pokud se procesu nepodaří přidělit dostatek paměti RAM nebo paměti, nelze jej vytvořit a program nelze spustit.



Jedním ze základních úkolů, které na svém počítači děláte, je zkontrolovat, kolik paměti nebo paměti RAM (Random Access Memory) jednotlivé procesy používají. Protože RAM nebo paměť vašeho počítače je omezená.



Představte si případ, kdy chcete spustit nějaký program a ten selže, protože nemáte dostatek paměti. Může se stát, že některé procesy využívají spoustu paměti, kterou právě nepotřebujete. Tyto procesy můžete zabít nebo zastavit, abyste uvolnili RAM nebo paměť, abyste mohli spouštět důležité programy.



V tomto článku vám ukážu, jak zkontrolovat využití paměti každého z procesů spuštěných na vašem počítači se systémem Linux. Pro všechny ukázky v tomto článku budu používat Debian 9 Stretch. Ale mělo by to fungovat na všech moderních distribucích Linuxu. Začněme.

Můžete použít ps příkaz ke kontrole využití paměti všech procesů v Linuxu. Tento postup má jeden problém. ps ve skutečnosti vám neukáže, kolik paměti proces používá ve formátu KB nebo MB, ale ukáže vám, kolik paměti se používá v procentech.

Využití paměti (v procentech) všech procesů běžících na vašem operačním systému Linux můžete zkontrolovat pomocí následujícího příkazu:



$ps -nebopid, uživatel,%mem,příkazsekera| třídit -b -k3 -r

Jak vidíte, všechny procesy s využitím paměti v procentech jsou uvedeny v sestupném pořadí (procesy využívající většinu paměti jsou uvedeny jako první).

Kontrola využití paměti v procesech pomocí pmap:

Paměť procesu nebo sady procesů můžete zkontrolovat ve formátu čitelném pro člověka (v kB nebo kilobajtech) pomocí pmap příkaz. Vše, co potřebujete, je PID procesů, u kterých chcete zkontrolovat využití paměti.

Řekněme, že chcete zkontrolovat, kolik paměti proces s PID 917 využívá. Chcete -li to provést, spusťte pmap jak následuje:

$sudopmap917

Jak vidíte, celková paměť použitá procesem 917 je 516104 kB nebo kilobajtů. Zde také můžete zjistit, kolik paměti využívají knihovny a další soubory potřebné ke spuštění procesu s PID 917.

Pokud vás nezajímá, kolik paměti knihovny nebo jiné závislé soubory využívají, spusťte pmap jak následuje:

$sudopmap917 | ocas -n 1

Jak vidíte, na obrazovce je vytištěna pouze celková paměť použitá procesem s PID 917.

Pokud chcete, můžete to dále filtrovat pomocí awk a získejte pouze velikost v kB nebo kilobajtech. Chcete -li to provést, spusťte pmap jak následuje:

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

Jak vidíte, tiskne se pouze využití paměti v kB nebo kilobajtech.

Nyní můžete také uvést, kolik paměti využívá více procesů pomocí jejich PID s pmap jak následuje:

$sudopmap917 531 | rukojeťcelkový

POZNÁMKA: Zde 917 a 531 jsou ID procesů nebo PID. Tímto způsobem můžete vložit libovolný počet PID.

Použití pmap k výpisu využití paměti všech procesů v kilobajtech:

V této části vám ukážu, jak napsat vlastní skript shellu, který zobrazí využití paměti všech procesů běžících na vašem operačním systému Linux ve formátu čitelném pro člověka (kilobajty nebo kB).

Nejprve vytvořte nový soubor sysmon ve vašem aktuálním pracovním adresáři pomocí následujícího příkazu:

$doteksysmon

Nyní vytvořte spustitelný soubor pomocí následujícího příkazu:

$chmod+x sysmon

sysmon je skript prostředí, který zobrazí všechny spuštěné procesy PID , MAJITEL , PAMĚŤ (v KB v sestupném pořadí) a PŘÍKAZ . Začněme.

Otevři sysmon skript s vaším oblíbeným textovým editorem, použiji Kate .

První příkaz, který spustím, mi nyní dá PID , MAJITEL a PŘÍKAZ všech běžících procesů oddělených symbolem dvojtečky (:) a uložte jej do souboru RAWIN proměnná. Poté smyčkujte výstup a vytiskněte jej na obrazovku.

Jak vidíte, dostávám správný výstup.

Nyní je čas zpracovat každý řádek, uložit informace oddělené dvojtečkou do samostatných proměnných. To jsem udělal na řádku 7, 8 a 9.

Jak vidíte, mohu tisknout PID , MAJITEL a PŘÍKAZ nyní ve svém vlastním formátu.

Nyní je čas načíst využití paměti každého PID. Řádek 10 to dělá.

Jak vidíte, vše funguje perfektně. Nyní mohu také vytisknout využití paměti každého procesu v kilobajtech (KB).

Nyní zbývá jen naformátovat výstup tak, aby vypadal hezky. Dávám přednost formátu tabulky. Řádek 5 vytiskne záhlaví každého sloupce tabulky.

Nakonec jsem vytiskl PID , MAJITEL , PAMĚŤ (v KB) a PŘÍKAZ každého procesu v tabulkovém formátu pomocí řádku 14.

Jak vidíte, funguje to docela dobře. Existuje však malý problém, procesy nejsou správně seřazeny sestupně podle využití paměti.

Abych to napravil, odstranil jsem třídit -bnr -k3 z řádku 3 a zabalil vše do funkce shellu sysmon_main () . Poté přenechal práci třídění na třídit příkaz.

Konečný skript shellu vypadá nějak takto:

Jak vidíte, funguje to skvěle.

Nyní jej můžete přesunout někam jako /usr/bin a spusťte jej stejně jako ostatní příkazy následujícím způsobem:

$sudo mv -protisysmon/usr/dopoledne

Provádění sysmon :

Děkujeme za přečtení tohoto článku.