Sådan kontrolleres hukommelsesforbrug pr. Proces på Linux

How Check Memory Usage Per Process Linux



I disse dage kan en computer køre mange programmer på én gang. CPU'en har ikke noget problem med at håndtere alle disse programmer, fordi CPU'er har flere kerner til at håndtere multi-tasking.

Hvert af disse programmer kører som en eller flere processer. Hver proces tildeler en vis mængde RAM eller hukommelse til sig selv. Det er vigtigt, at processen fungerer korrekt. Hvis en proces ikke tildeler nok RAM eller hukommelse, kan processen ikke oprettes, og programmet kan ikke starte.







Så en af ​​de grundlæggende opgaver, du udfører på din computer, er at kontrollere, hvor meget hukommelse eller RAM (Random Access Memory) hver af processerne bruger. Fordi RAM eller hukommelse på din computer er begrænset.



Forestil dig en sag, hvor du vil køre et eller andet program, og det mislykkes, fordi du ikke har nok hukommelse. Det kan være, at nogle af processerne bruger meget hukommelse, som du ikke har brug for lige nu. Du kan dræbe eller stoppe disse processer for at frigøre RAM eller hukommelse, så du kan starte dine vigtige programmer.



I denne artikel vil jeg vise dig, hvordan du kontrollerer hukommelsesforbruget for hver af de processer, der kører på din Linux -maskine. Jeg vil bruge Debian 9 Stretch til hele demonstrationen i denne artikel. Men det burde fungere på alle moderne Linux -distributioner. Lad os komme igang.





Du kan bruge ps kommando for at kontrollere hukommelsesbrug af alle processer på Linux. Der er et problem med denne procedure. ps ikke virkelig vise dig, hvor meget hukommelse en proces bruger i KB- eller MB -format, men det vil vise dig, hvor meget hukommelse der bruges i procent.

Du kan kontrollere hukommelsesforbruget (i procent) af hele processen, der kører på dit Linux -operativsystem med følgende kommando:



$ps -ellerpid, bruger,%meme,kommandoøkse| sortere -b -k3 -r

Som du kan se, er alle processer med hukommelsesforbrug i procent angivet i faldende rækkefølge (De processer, der bruger det meste af hukommelsen, er først angivet).

Kontrol af hukommelsesforbrug af processer med pmap:

Du kan kontrollere hukommelsen til en proces eller et sæt processer i et menneskeligt læsbart format (i KB eller kilobytes) med pmap kommando. Alt du behøver er PID for de processer, du vil kontrollere hukommelsesforbrug af.

Lad os sige, at du vil kontrollere, hvor meget hukommelse processen med PID 917 bruger. For at gøre det, løb pmap som følger:

$sudopmap917

Som du kan se, er den samlede hukommelse, der bruges af processen 917, 516104 KB eller kilobytes. Du kan også se, hvor meget hukommelse bibliotekerne og andre filer, der kræves til at køre processen med PID 917, også bruger her.

Hvis du er ligeglad med, hvor meget hukommelse bibliotekerne eller andre afhængige filer bruger, så kør pmap som følger:

$sudopmap917 | hale -n 1

Som du kan se, udskrives kun den samlede hukommelse, der bruges af processen med PID 917, på skærmen.

Hvis du vil, kan du yderligere filtrere dette med awk og få kun størrelsen i KB eller kilobytes. For at gøre det, løb pmap som følger:

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

Som du kan se, udskrives kun hukommelsesforbruget i KB eller kilobytes.

Nu kan du også angive, hvor meget hukommelse der bruges af flere processer ved hjælp af deres PID'er med pmap som følger:

$sudopmap917 531 | grebi alt

BEMÆRK: Her er 917 og 531 proces -id'er eller PID'er. Du kan sætte så mange PID'er som du vil på denne måde.

Brug af pmap til at angive brug af hukommelse af alle processer i kilobyte:

I dette afsnit vil jeg vise dig, hvordan du skriver dit eget shell -script for at angive hukommelsesforbrug af alle de processer, der kører på dit Linux -operativsystem i menneskeligt læseligt format (kilobytes eller KB).

Lav først en ny fil sysmon i din nuværende arbejdskatalog med følgende kommando:

$røre vedsysmon

Gør nu filen eksekverbar med følgende kommando:

$chmod+x sysmon

sysmon er shell -scriptet, der viser alle de kørende processer PID , EJER , HUKOMMELSE (i KB i faldende rækkefølge) og KOMMANDO . Lad os begynde.

Åbn sysmon script med din foretrukne teksteditor, jeg vil bruge Kate .

Nu vil den første kommando, jeg skal køre, give mig PID , EJER og KOMMANDO af alle de igangværende processer adskilt af kolon (:) symbol og gem det i RAWIN variabel. Gå derefter gennem output og udskriv det på skærmen.

Som du kan se, får jeg det korrekte output.

Nu er det tid til at behandle hver linje, gemme de kolon afgrænsede oplysninger i separate variabler. Det var det, jeg gjorde på linje 7, 8 og 9.

Som du kan se, kan jeg udskrive PID , EJER og KOMMANDO i mit eget format nu.

Nu er det tid til at hente brug af hukommelse for hver PID. Linje 10 gør netop det.

Som du kan se, fungerer alt perfekt. Nu kan jeg også udskrive hukommelsesforbrug af hver proces i kilobytes (KB).

Nu er det kun tilbage at formatere output til at se godt ud. Jeg foretrækker bordformat. Linje 5 udskriver overskriften på hver kolonne i tabellen.

Til sidst printede jeg PID , EJER , HUKOMMELSE (i KB) og KOMMANDO af hver proces i et tabelformat ved hjælp af linje 14.

Som du kan se, fungerer det ganske godt. Der er dog en lille smule problem, processerne er ikke korrekt sorteret i faldende rækkefølge efter hukommelsesbrug.

For at løse det fjernede jeg sorter -bnr -k3 fra linje 3 og pakket alt ind i en skalfunktion sysmon_main () . Efterlod derefter opgaven med at sortere til sortere kommando.

Det sidste shell -script ser sådan ud:

Som du kan se, fungerer det fantastisk.

Nu kan du flytte det til et sted som /usr/bin og udfør det ligesom andre kommandoer som følger:

$sudo mv -vsysmon/usr/er

Udfører sysmon :

Tak fordi du læste denne artikel.