Hvordan sjekke minnebruk per prosess på Linux

Hvordan sjekke minnebruk per prosess på Linux

I disse dager kan en datamaskin kjøre mange programmer samtidig. CPU har ingen problemer med å håndtere alle disse programmene fordi CPUer har flere kjerner for å håndtere multi-tasking.

Hvert av disse programmene kjører som en eller flere prosesser. Hver prosess tildeler en viss mengde RAM eller minne for seg selv. Det er viktig for prosessen å fungere riktig. Hvis en prosess ikke klarer å tildele nok RAM eller minne, kan ikke prosessen opprettes, og programmet vil ikke kunne starte.

Så en av de grunnleggende oppgavene du gjør på datamaskinen din er å sjekke hvor mye minne eller RAM (Random Access Memory) hver av prosessen bruker. Fordi RAM eller minne om datamaskinen din er begrenset.

Se for deg en sak, der du vil kjøre et program og det mislykkes fordi du ikke har nok minne. Kan være noen av prosessene bruker mye minne som du ikke trenger akkurat nå. Du kan drepe eller stoppe disse prosessene for å frigjøre RAM eller minne, slik at du kan starte viktige programmer.

I denne artikkelen vil jeg vise deg hvordan du kan sjekke minnebruk av hver av prosessene som kjører på Linux -maskinen din. Jeg vil bruke Debian 9 Strekk for all demonstrasjonen i denne artikkelen. Men det skal fungere på alle moderne Linux -distribusjoner. La oss komme i gang.

Kontroller minnebruk ved hjelp av PS -kommando:

Du kan bruke PS Kommando for å sjekke minnebruk av alle prosessene på Linux. Det er ett problem med denne prosedyren. PS Vis ikke egentlig hvor mye minne en prosess bruker i KB- eller MB -format, men det vil vise deg hvor mye minne som brukes i prosent.

Du kan sjekke minnebruk (i prosent) av all prosessen som kjører på Linux -operativsystemet med følgende kommando:

$ ps -o pid, bruker,%mem, kommandoøks | sorter -b -k3 -r

Som du kan se, er alle prosessene med minnebruk i prosent oppført i synkende rekkefølge (prosessene som bruker det meste av minnet er oppført først).

Kontrollere minnebruk av prosesser med PMAP:

Du kan sjekke minnet om en prosess eller et sett med prosesser i menneskelig lesbart format (i KB eller kilobyte) med PMAP kommando. Alt du trenger er PID på prosessene du vil sjekke minnebruk av.

La oss si, du vil sjekke hvor mye minne prosessen med PID 917 bruker. For å gjøre det, løp PMAP følgende:

$ sudo pmap 917

Som du kan se, er det totale minnet som brukes av prosessen 917 516104 KB eller Kilobyte. Du kan også se hvor mye minne bibliotekene og andre filer som kreves for å kjøre prosessen med PID 917 bruker også her.

Hvis du ikke bryr deg om hvor mye minne bibliotekene eller andre avhengige filer bruker, kan du kjøre PMAP følgende:

$ sudo pmap 917 | hale -n 1

Som du kan se, er bare det totale minnet som brukes av prosessen med PID 917, skrevet ut på skjermen.

Hvis du vil, kan du filtrere dette ytterligere med awk og få bare størrelsen i KB eller Kilobytes. For å gjøre det, løp PMAP følgende:

$ sudo pmap 917 | hale -n 1 | awk '/[0-9] k/skriv ut $ 2'

Som du kan se, er bare minnebruken i KB eller Kilobytes trykt.

Nå kan du også liste opp hvor mye minne som brukes av flere prosesser ved å bruke PID -ene med PMAP følgende:

$ sudo pmap 917 531 | grep totalt

MERK: Her er 917 og 531 prosess -ID -er eller PID -er. Du kan legge så mange pids som du vil på denne måten.

Bruke PMAP for å liste til minnebruk av alle prosessene i kilobyte:

I dette avsnittet vil jeg vise deg hvordan du skriver ditt eget skallskript for å liste til minnebruk av alle prosessene som kjører på Linux -operativsystemet ditt i menneskelig lesbart format (Kilobytes eller KB).

Lag først en ny fil Sysmon I din nåværende arbeidskatalog med følgende kommando:

$ Touch Sysmon

Nå gjør filen kjørbar med følgende kommando:

$ chmod +x sysmon

Sysmon er skallskriptet som vil vise alle løpsprosessene PID, EIEREN, HUKOMMELSE (i KB i synkende rekkefølge) og KOMMANDO. La oss begynne.

Åpne Sysmon manus med din favoritt tekstredigerer, jeg skal bruke Kate.

Nå vil den første kommandoen jeg skal kjøre gi meg PID, EIEREN og KOMMANDO av alle løpsprosessene atskilt med kolon (:) Symbol og lagre den i Rawin variabel. Sløyfe deretter gjennom utgangen og skriv den ut på skjermen.

Som du ser, får jeg riktig produksjon.

Nå er det på tide å behandle hver linje, lagre tykktarmen avgrenset informasjon i separate variabler. Det var det jeg gjorde på linje 7, 8 og 9.

Som du kan se, kan jeg skrive ut PID, EIEREN og KOMMANDO I mitt eget format nå.

Nå er det på tide å hente minnebruk av hver PID. Linje 10 gjør nettopp det.

Som du ser, fungerer alt perfekt. Nå kan jeg også skrive ut minnebruk av hver prosess i kilobyte (KB).

Nå er alt som er igjen å gjøre formatet utdataene for å se fin ut. Jeg foretrekker bordformat. Linje 5 skriver ut overskriften til hver kolonne i tabellen.

Til slutt trykte jeg PID, EIEREN, HUKOMMELSE (i KB) og KOMMANDO av hver prosess i tabellformat ved bruk av linje 14.

Som du ser, fungerer det ganske bra. Det er imidlertid litt av problemene, prosessene er ikke riktig sortert i synkende rekkefølge etter minnebruk.

For å fikse det, fjernet jeg Sorter -Bnr -K3 fra linje 3 og pakket inn alt i en skallfunksjon sysmon_main (). Forlot deretter jobben med å sortere til sortere kommando.

Det endelige skallskriptet ser ut som dette:

Som du ser, fungerer det bra.

Nå kan du flytte den til et sted som /usr/bin og utfør det akkurat som andre kommandoer som følger:

$ sudo mv -v sysmon /usr /bin

Utføre Sysmon:

Takk for at du leste denne artikkelen.