Kaip patikrinti atminties naudojimą procese „Linux“

How Check Memory Usage Per Process Linux



Šiais laikais kompiuteris vienu metu gali paleisti daug programų. Centrinis procesorius neturi problemų tvarkydamas visas šias programas, nes procesoriai turi kelis branduolius, kad galėtų atlikti kelias užduotis.

Kiekviena iš šių programų veikia kaip vienas ar keli procesai. Kiekvienas procesas paskiria tam tikrą RAM ar atminties kiekį sau. Svarbu, kad procesas tinkamai veiktų. Jei procesui nepavyksta skirti pakankamai RAM ar atminties, proceso negalima sukurti ir programa negali būti paleista.







Taigi, viena iš pagrindinių jūsų kompiuteryje atliekamų užduočių yra patikrinti, kiek atminties ar RAM (atsitiktinės prieigos atminties) naudoja kiekvienas procesas. Kadangi jūsų kompiuterio RAM ar atmintis yra ribota.



Įsivaizduokite atvejį, kai norite paleisti kokią nors programą ir ji nepavyksta, nes neturite pakankamai atminties. Gali būti, kad kai kurie procesai naudoja daug atminties, kurios jums šiuo metu nereikia. Galite užmušti arba sustabdyti šiuos procesus, kad atlaisvintumėte RAM ar atminties, kad galėtumėte paleisti svarbias programas.



Šiame straipsnyje aš jums parodysiu, kaip patikrinti kiekvieno „Linux“ kompiuteryje vykdomo proceso atminties naudojimą. Visoms šio straipsnio demonstracijoms naudosiu „Debian 9 Stretch“. Bet tai turėtų veikti bet kuriame šiuolaikiniame „Linux“ platinime. Pradėkime.





Galite naudoti ps komanda, skirta patikrinti visų „Linux“ procesų atminties naudojimą. Su šia procedūra yra viena problema. ps nerodo jums, kiek atminties procesas naudoja KB arba MB formatu, bet parodys, kiek atminties sunaudojama procentais.

Galite patikrinti viso „Linux“ operacinėje sistemoje vykstančio proceso atminties naudojimą (procentais) naudodami šią komandą:



$ps -arbapid, vartotojas,%meme,komandąkirvis| rūšiuoti -b -k3 -r

Kaip matote, visi procesai su atminties sunaudojimu procentais yra išvardyti mažėjančia tvarka (pirmiausia išvardijami procesai, naudojantys didžiąją atminties dalį).

Procesų atminties naudojimo tikrinimas naudojant pmap:

Galite patikrinti proceso ar procesų rinkinio atmintį žmogaus skaitomu formatu (KB arba kilobaitais) naudodami pmap komandą. Viskas, ko jums reikia, yra procesų, kurių atmintį norite patikrinti, PID.

Tarkime, norite patikrinti, kiek atminties naudoja procesas su PID 917. Norėdami tai padaryti, bėkite pmap taip:

$sudopmap917

Kaip matote, visa 917 proceso naudojama atmintis yra 516104 KB arba kilobaitai. Čia taip pat galite pamatyti, kiek atminties naudoja bibliotekos ir kiti failai, reikalingi procesui vykdyti naudojant PID 917.

Jei jums nerūpi, kiek atminties naudoja bibliotekos ar kiti priklausomi failai, paleiskite pmap taip:

$sudopmap917 | uodega -n 1

Kaip matote, ekrane atspausdinama tik visa su PID 917 naudojamo proceso atmintis.

Jei norite, galite tai dar labiau filtruoti awk ir gaukite tik dydį KB arba kilobaitais. Norėdami tai padaryti, bėkite pmap taip:

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

Kaip matote, spausdinama tik atmintis, naudojama KB arba kilobaitais.

Dabar taip pat galite išvardyti, kiek atminties naudoja keli procesai, naudojant jų PID pmap taip:

$sudopmap917 531 | suimtiviso

PASTABA: Čia 917 ir 531 yra proceso ID arba PID. Tokiu būdu galite įdėti tiek PID, kiek norite.

„Pmap“ naudojimas visų procesų atminties naudojimo kilobaitais sąrašui:

Šiame skyriuje parodysiu, kaip parašyti savo apvalkalo scenarijų, kad būtų išvardytas visų jūsų „Linux“ operacinėje sistemoje vykstančių procesų atminties naudojimas žmogaus skaitomu formatu (kilobaitais arba KB).

Pirmiausia sukurkite naują failą sysmon dabartiniame darbo kataloge naudodami šią komandą:

$paliestisysmon

Dabar padarykite failą vykdomąjį naudodami šią komandą:

$chmod+x sistema

sysmon yra apvalkalo scenarijus, kuriame bus rodomi visi vykdomi procesai PID , SAVININKAS , ATMINTIS (KB mažėjančia tvarka) ir KOMANDUOTI . Pradėkime.

Atidaryk sysmon scenarijų su mėgstamu teksto redaktoriumi, aš ketinu naudoti Kate .

Dabar pirmoji komanda, kurią ketinu paleisti, duos man PID , SAVININKAS ir KOMANDUOTI visų vykdomų procesų, atskirtų dvitaškiu (:) simboliu ir išsaugokite jį RAWIN kintamasis. Tada peržiūrėkite išvestį ir atspausdinkite ją ekrane.

Kaip matote, aš gaunu teisingą rezultatą.

Dabar atėjo laikas apdoroti kiekvieną eilutę, saugoti dvitaškiais atskirtą informaciją atskirais kintamaisiais. Tai aš padariau 7, 8 ir 9 eilutėse.

Kaip matote, galiu spausdinti PID , SAVININKAS ir KOMANDUOTI dabar savo formatu.

Dabar atėjo laikas išsiaiškinti kiekvieno PID atminties naudojimą. 10 eilutė tai daro.

Kaip matote, viskas veikia puikiai. Dabar taip pat galiu atspausdinti kiekvieno proceso atminties naudojimą kilobaitais (KB).

Dabar belieka tik suformatuoti išvestį, kad ji atrodytų gražiai. Man labiau patinka lentelės formatas. 5 eilutėje spausdinama kiekvieno lentelės stulpelio antraštė.

Pagaliau atspausdinau PID , SAVININKAS , ATMINTIS (KB) ir KOMANDUOTI kiekvieno proceso lentelės formatu, naudojant 14 eilutę.

Kaip matote, jis veikia gana gerai. Tačiau yra šiek tiek problemų, nes procesai nėra tinkamai surūšiuoti mažėjančia tvarka pagal atminties naudojimą.

Norėdami tai išspręsti, pašalinau rūšiuoti -bnr -k3 nuo 3 eilutės ir viską apvyniojo apvalkalo funkcija sysmon_main () . Tada rūšiavimo darbą paliko rūšiuoti komandą.

Galutinis apvalkalo scenarijus atrodo maždaug taip:

Kaip matote, tai puikiai veikia.

Dabar galite jį perkelti į kitą vietą /usr/bin ir vykdykite ją kaip ir kitas komandas taip:

$sudo mv -vsysmon/usr/esu

Vykdomas sysmon :

Dėkojame, kad perskaitėte šį straipsnį.