Hoe het geheugengebruik per proces op Linux te controleren

How Check Memory Usage Per Process Linux



Tegenwoordig kan een computer veel programma's tegelijk uitvoeren. De CPU heeft geen probleem om al deze programma's te verwerken, omdat CPU's meerdere kernen hebben om multitasking aan te kunnen.

Elk van deze programma's wordt uitgevoerd als een of meer processen. Elk proces wijst een bepaalde hoeveelheid RAM of geheugen toe aan zichzelf. Het is essentieel om het proces goed te laten functioneren. Als een proces niet voldoende RAM of geheugen toewijst, kan het proces niet worden gemaakt en kan het programma niet worden gestart.







Een van de basistaken die u op uw computer uitvoert, is dus controleren hoeveel geheugen of RAM (Random Access Memory) elk proces gebruikt. Omdat RAM of geheugen van uw computer beperkt is.



Stel je een geval voor waarin je een programma wilt uitvoeren en het mislukt omdat je niet genoeg geheugen hebt. Mogelijk gebruiken sommige processen veel geheugen dat u nu niet nodig hebt. U kunt deze processen doden of stoppen om RAM of geheugen vrij te maken, zodat u uw belangrijke programma's kunt starten.



In dit artikel laat ik je zien hoe je het geheugengebruik van elk van de processen die op je Linux-machine draaien, kunt controleren. Ik zal Debian 9 Stretch gebruiken voor alle demonstraties in dit artikel. Maar het zou moeten werken op alle moderne Linux-distributies. Laten we beginnen.





U kunt de ps commando om het geheugengebruik van alle processen op Linux te controleren. Er is één probleem met deze procedure. ps laten u niet echt zien hoeveel geheugen een proces gebruikt in KB- of MB-indeling, maar het zal u laten zien hoeveel geheugen in procenten wordt gebruikt.

U kunt het geheugengebruik (in percentage) van alle processen die op uw Linux-besturingssysteem draaien, controleren met de volgende opdracht:



$ps -ofpid,gebruiker,%meme,opdrachtbijl| soort -B -k3 -R

Zoals u kunt zien, worden alle processen met geheugengebruik in procenten weergegeven in aflopende volgorde (de processen die het meeste geheugen gebruiken, worden eerst weergegeven).

Geheugengebruik van processen controleren met pmap:

U kunt het geheugen van een proces of een reeks processen in een voor mensen leesbaar formaat (in KB of kilobytes) controleren met pmap opdracht. Het enige dat u nodig hebt, is de PID van de processen waarvan u het geheugengebruik wilt controleren.

Laten we zeggen dat u wilt controleren hoeveel geheugen het proces met PID 917 gebruikt. Om dat te doen, ren pmap als volgt:

$sudopmap917

Zoals u kunt zien, is het totale geheugen dat door proces 917 wordt gebruikt 516104 KB of kilobytes. U kunt hier ook zien hoeveel geheugen de bibliotheken en andere bestanden gebruiken die nodig zijn om het proces met PID 917 uit te voeren.

Als het je niet uitmaakt hoeveel geheugen de bibliotheken of andere afhankelijke bestanden gebruiken, voer dan pmap als volgt:

$sudopmap917 | staart -N 1

Zoals u kunt zien, wordt alleen het totale geheugen dat door het proces met PID 917 wordt gebruikt, op het scherm afgedrukt.

Als je wilt, kun je dit verder filteren met awk en krijg alleen de grootte in KB of kilobytes. Om dat te doen, ren pmap als volgt:

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

Zoals u kunt zien, wordt alleen het geheugengebruik in KB of kilobytes afgedrukt.

Nu kunt u ook aangeven hoeveel geheugen wordt gebruikt door meerdere processen met behulp van hun PID's met pmap als volgt:

$sudopmap917 531 | greeptotaal

OPMERKING: Hier zijn 917 en 531 proces-ID's of PID's. U kunt op deze manier zoveel PID's plaatsen als u wilt.

Pmap gebruiken om geheugengebruik van alle processen in kilobytes weer te geven:

In deze sectie zal ik je laten zien hoe je je eigen shellscript schrijft om het geheugengebruik van alle processen die op je Linux-besturingssysteem draaien in een voor mensen leesbaar formaat (kilobytes of KB) op te sommen.

Maak eerst een nieuw bestand sysmon in uw huidige werkmap met het volgende commando:

$aanrakensysmon

Maak het bestand nu uitvoerbaar met het volgende commando:

$chmod+x sysmon

sysmon is het shellscript dat alle lopende processen weergeeft PID , EIGENAAR , GEHEUGEN (in KB in aflopende volgorde) en OPDRACHT . Laten we beginnen.

Open de sysmon script met je favoriete teksteditor, ik ga gebruiken Kate .

Nu, het eerste commando dat ik ga uitvoeren, geeft me de PID , EIGENAAR en OPDRACHT van alle lopende processen gescheiden door een dubbele punt (:) symbool en sla het op in de RAWIN variabel. Loop vervolgens door de uitvoer en print deze op het scherm.

Zoals je kunt zien, krijg ik de juiste output.

Nu is het tijd om elke regel te verwerken, de door dubbele punten gescheiden informatie op te slaan in afzonderlijke variabelen. Dat deed ik op lijn 7, 8 en 9.

Zoals je kunt zien, kan ik afdrukken PID , EIGENAAR en OPDRACHT nu in mijn eigen formaat.

Nu is het tijd om het geheugengebruik van elke PID op te halen. Lijn 10 doet precies dat.

Zoals je ziet werkt alles perfect. Nu kan ik het geheugengebruik van elk proces ook in kilobytes (KB) afdrukken.

Nu hoeft u alleen nog de uitvoer te formatteren om er mooi uit te zien. Ik geef de voorkeur aan tafelformaat. Regel 5 drukt de kop van elke kolom van de tabel af.

Eindelijk heb ik geprint PID , EIGENAAR , GEHEUGEN (in KB) en OPDRACHT van elk proces in een tabelformaat met behulp van regel 14.

Zoals je kunt zien, werkt het best goed. Er is echter een klein probleempje, de processen zijn niet correct gesorteerd in aflopende volgorde op geheugengebruik.

Om dat op te lossen, heb ik verwijderd sort -bnr -k3 van regel 3 en verpakt alles in een shell-functie sysmon_main() . Daarna de taak van het sorteren overgelaten aan de soort opdracht.

Het uiteindelijke shellscript ziet er ongeveer zo uit:

Zoals je kunt zien, werkt het uitstekend.

Nu kun je het ergens naartoe verplaatsen zoals /usr/bin en voer het als volgt uit, net als andere opdrachten:

$sudo mv -vsysmon/usr/ben

uitvoeren sysmon :

Bedankt voor het lezen van dit artikel.