Ako skontrolovať využitie pamäte na proces v systéme Linux

How Check Memory Usage Per Process Linux



V dnešnej dobe môže počítač spustiť mnoho programov naraz. CPU nemá problém zvládnuť všetky tieto programy, pretože CPU má viac jadier na zvládnutie viacerých úloh.

Každý z týchto programov beží ako jeden alebo viac procesov. Každý proces alokuje určité množstvo pamäte RAM alebo pamäte. Je nevyhnutné, aby proces správne fungoval. Ak sa procesu nepodarilo prideliť dostatok pamäte RAM alebo pamäte, nemožno ho vytvoriť a program sa nedá spustiť.







Jednou zo základných úloh, ktoré vo svojom počítači robíte, je skontrolovať, koľko pamäte alebo pamäte RAM (pamäť s náhodným prístupom) jednotlivé procesy používajú. Pretože RAM alebo pamäť vášho počítača je obmedzená.



Predstavte si prípad, v ktorom chcete spustiť nejaký program a zlyhá, pretože nemáte dostatok pamäte. Je možné, že niektoré z procesov používajú veľa pamäte, ktorú práve nepotrebujete. Tieto procesy môžete zastaviť alebo zastaviť, aby ste uvoľnili RAM alebo pamäť, aby ste mohli spustiť dôležité programy.



V tomto článku vám ukážem, ako skontrolovať využitie pamäte v každom z procesov spustených na vašom počítači so systémom Linux. Na všetky ukážky v tomto článku budem používať Debian 9 Stretch. Ale malo by to fungovať na všetkých moderných distribúciách Linuxu. Začnime.





Môžete použiť ps príkaz na kontrolu využitia pamäte všetkých procesov v systéme Linux. Pri tomto postupe je jeden problém. ps v skutočnosti vám neukáže, koľko pamäte proces používa vo formáte KB alebo MB, ale ukáže vám, koľko pamäte sa v percentách používa.

Využitie pamäte (v percentách) celého procesu spusteného vo vašom operačnom systéme Linux môžete skontrolovať pomocou nasledujúceho príkazu:



$ps -alebopid, užívateľ,%meme,príkazsekera| triediť -b -k3 -r

Ako vidíte, všetky procesy s percentuálnym využitím pamäte sú uvedené v zostupnom poradí (procesy využívajúce väčšinu pamäte sú uvedené ako prvé).

Kontrola použitia pamäte v procesoch pomocou programu pmap:

Pamäť procesu alebo sady procesov v ľudsky čitateľnom formáte (v kB alebo kilobajtoch) môžete skontrolovať pomocou pmap príkaz. Všetko, čo potrebujete, je PID procesov, pri ktorých chcete skontrolovať využitie pamäte.

Povedzme, že chcete skontrolovať, koľko pamäte proces s PID 917 používa. Ak to chcete urobiť, spustite pmap nasledovne:

$sudopmap917

Ako vidíte, celková pamäť použitá v procese 917 je 516104 KB alebo kilobajtov. Tu tiež môžete vidieť, koľko pamäte používajú knižnice a ďalšie súbory potrebné na spustenie procesu s PID 917.

Ak vám nie je jedno, koľko pamäte knižnice alebo iné závislé súbory používajú, spustite ho pmap nasledovne:

$sudopmap917 | chvost -n 1

Ako vidíte, na obrazovke je vytlačená iba celková pamäť použitá pri procese s PID 917.

Ak chcete, môžete to ďalej filtrovať pomocou awk a získajte iba veľkosť v kB alebo kilobajtoch. Ak to chcete urobiť, spustite pmap nasledovne:

$sudopmap917 | chvost -n 1 | awk ' / [0-9] K / {tlač $ 2}'

Ako vidíte, vytlačí sa iba využitie pamäte v kB alebo kilobajtoch.

Teraz môžete tiež uviesť, koľko pamäte zaberajú viaceré procesy pomocou ich identifikátorov PID s pmap nasledovne:

$sudopmap917 531 | uchopenieCelkom

POZNÁMKA: Tu 917 a 531 sú ID procesov alebo PID. Týmto spôsobom môžete vložiť toľko PID, koľko chcete.

Použitie pmap na zoznam použitia pamäte v rámci všetkých procesov v kilobajtoch:

V tejto časti vám ukážem, ako napísať vlastný skript Shell, aby ste uviedli využitie pamäte všetkých procesov bežiacich na vašom operačnom systéme Linux vo formáte čitateľnom pre ľudí (kilobajty alebo kB).

Najprv vytvorte nový súbor sysmon vo vašom aktuálnom pracovnom adresári pomocou nasledujúceho príkazu:

$dotýkať sasysmon

Teraz spustite súbor pomocou nasledujúceho príkazu:

$chmod+x sysmon

sysmon je shell skript, ktorý zobrazí všetky spustené procesy PID , VLASTNÍK , PAMÄŤ (v KB v zostupnom poradí) a PRÍKAZ . Začnime.

Otvor sysmon skript s vašim obľúbeným textovým editorom, ktorý použijem Kate .

Teraz mi prvý príkaz, ktorý spustím, poskytne príkaz PID , VLASTNÍK a PRÍKAZ všetkých spustených procesov oddelených dvojbodkou (:) a uložte ich do súboru RAWIN premenná. Potom pretočte výstup a vytlačte ho na obrazovku.

Ako vidíte, dostávam správny výstup.

Teraz je načase spracovať každý riadok a uložiť informácie oddelené dvojbodkou do samostatných premenných. To som urobil na riadkoch 7, 8 a 9.

Ako vidíte, môžem tlačiť PID , VLASTNÍK a PRÍKAZ teraz vo svojom vlastnom formáte.

Teraz je načase načítať využitie pamäte každého PID. Riadok 10 to robí.

Ako vidíte, všetko funguje perfektne. Teraz môžem tiež vytlačiť využitie pamäte každého procesu v kilobajtoch (KB).

Teraz už len zostáva naformátovať výstup tak, aby vyzeral pekne. Preferujem formát tabuľky. Riadok 5 vytlačí hlavičku každého stĺpca tabuľky.

Nakoniec som tlačil PID , VLASTNÍK , PAMÄŤ (v KB) a PRÍKAZ každého procesu v tabuľkovom formáte pomocou riadka 14.

Ako vidíte, funguje to celkom dobre. Je tu malý problém, ale procesy nie sú správne zoradené zostupne podľa využitia pamäte.

Aby som to napravil, odstránil som triediť -bnr -k3 z riadku 3 a zabalil všetko do funkcie shell sysmon_main () . Potom ponechal úlohu triedenia na triediť príkaz.

Konečný skript shell vyzerá takto:

Ako vidíte, funguje to skvele.

Teraz ho môžete presunúť niekam ako /usr/bin a spustite ho rovnako ako ostatné príkazy takto:

$sudo mv -vsysmon/usr/dopoludnia

Vykonáva sa sysmon :

Ďakujem za prečítanie tohto článku.