GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie kann ich die Speichernutzung jedes Prozesses anzeigen, wenn ich ein 'ps -ef' mache?

Die Antwort von @ user26528 berechnet den Speicher nicht ganz richtig - Sie benötigen die Summe der Zuordnungen in Smaps, nicht nur die oberste. Dieses Skript sollte es tun:

#!/bin/bash

for pid in $(ps -ef | awk '{print $2}'); do
    if [ -f /proc/$pid/smaps ]; then
        echo "* Mem usage for PID $pid"     
        rss=$(awk 'BEGIN {i=0} /^Rss/ {i = i + $2} END {print i}' /proc/$pid/smaps)
        pss=$(awk 'BEGIN {i=0} /^Pss/ {i = i + $2 + 0.5} END {print i}' /proc/$pid/smaps)
        sc=$(awk 'BEGIN {i=0} /^Shared_Clean/ {i = i + $2} END {print i}' /proc/$pid/smaps)            
        sd=$(awk 'BEGIN {i=0} /^Shared_Dirty/ {i = i + $2} END {print i}' /proc/$pid/smaps)
        pc=$(awk 'BEGIN {i=0} /^Private_Clean/ {i = i + $2} END {print i}' /proc/$pid/smaps)
        pd=$(awk 'BEGIN {i=0} /^Private_Dirty/ {i = i + $2} END {print i}' /proc/$pid/smaps)
        echo "-- Rss: $rss kB" 
        echo "-- Pss: $pss kB"
        echo "Shared Clean $sc kB"
        echo "Shared Dirty $sd kB"
        echo "Private $(($pd + $pc)) kB"
    fi
done

ps ef -o command,vsize,rss,%mem,size

Ich konnte keine Option für gemeinsam genutzten Speicher finden, aber ich habe Optionen für % des gesamten physischen Speichers und die Menge an Auslagerungsspeicher gefunden, die zum Auslagern des Prozesses erforderlich wäre. Dies und vieles mehr ist in der Manpage für ps dokumentiert.


Prozesse nach Speicherverbrauch auflisten

ps -e -orss=,args=| sortieren -b -k1,1n


Linux
  1. Wie kann ich die Prozessoraffinität eines Prozesses unter Linux einstellen?

  2. Wie kann ich die Speicherbandbreite beobachten?

  3. Wie kann die Speichernutzung der Anwendung begrenzt werden?

  4. Wie kann ich einen Speicherblock aus dem Linux-Kernel reservieren?

  5. Wie kann die ClamAV-Speichernutzung reduziert werden?

Wie kann ich die tatsächliche Speichernutzung einer Anwendung oder eines Prozesses messen?

Wie berechnet man die CPU-Auslastung eines Prozesses durch PID in Linux von C?

Wie kann ich die Speichernutzung profilieren?

Wenn ich die PID-Nummer eines Prozesses kenne, wie erhalte ich seinen Namen?

Wie kann die Nutzung des für den Kernel dedizierten Speichers überwacht werden?

Maximale Speicherauslastung eines Prozesses