Die Speicherauslastung über ps zu ermitteln, ist ziemlich unzuverlässig. Wenn Sie einen neueren Kernel haben, sollte dieser / proc / pid # / smaps unterstützen, was Ihnen einige detaillierte Informationen über die Speichernutzung jedes Prozesses gibt. Im Folgenden finden Sie ein ziemlich unsauberes und schnelles Skript, mit dem Sie alle offenen Prozesse durchlaufen und die Verwendung von Size, Rss, Pss und Shared Clean / Dirty ermitteln können. Hoffentlich kann es in irgendeiner Weise nützlich sein.
#!/bin/bash
for pid in $(ps -ef | awk '{print $2}'); do
if [ -f /proc/$pid/smaps ]; then
echo "* Mem usage for PID $pid"
echo "-- Size:"
cat /proc/$pid/smaps | grep -m 1 -e ^Size: | awk '{print $2}'
echo "-- Rss:"
cat /proc/$pid/smaps | grep -m 1 -e ^Rss: | awk '{print $2}'
echo "-- Pss:"
cat /proc/$pid/smaps | grep -m 1 -e ^Pss: | awk '{print $2}'
echo "Shared Clean"
cat /proc/$pid/smaps | grep -m 1 -e '^Shared_Clean:' | awk '{print $2}'
echo "Shared Dirty"
cat /proc/$pid/smaps | grep -m 1 -e '^Shared Dirty:' | awk '{print $2}'
fi
done
ps ef -o command,vsize,rss,%mem,size
Ich konnte keine Option für den gemeinsam genutzten Speicher finden, habe jedoch Optionen für% des gesamten physischen Speichers und die Menge an Swapspace gefunden, die zum Auslagern des Prozesses erforderlich wäre. Dies und vieles mehr ist in der Manpage für ps dokumentiert.
quelle
top
,,ps
und ähnliche Programme sind in gleicher Weise davon betroffen.Die Antwort von @ user26528 berechnet den Speicher nicht richtig - Sie benötigen die Summe der Zuordnungen in Smaps, nicht nur die oberste. Dieses Skript sollte es tun:
quelle
Listen Sie Prozesse nach Speichernutzung auf
quelle
ps -e -orss=,pid=,args= | sort -b -k1,1n
diese Option , um die Prozess-ID einzuschließenps
kann auf eigeneps -eo rss=,args= --sort +rss
Sie können verwenden
quelle
Listen Sie Prozesse nach Mem-Verwendung auf
Befehl: ps -e -orss =, args = | sort -b -k1,1n | pr - TW $ COLUMNS \
quelle
Aktualisieren:
Der folgende Einzeiler enthält auch Informationen zum Gesamtspeicherverbrauch des aktuellen Benutzers.
Ich habe soeben alle Benutzerprozesse aufgelistet, die nach der höchsten Speichernutzung in MB sortiert sind:
Sie können
command=
statt verwendencomm=
, um den vollständigen Pfadprozess anzuzeigen.Das
=
entfernt nur den Spaltentitel.quelle
Ich habe festgestellt, dass ein und derselbe Prozess einen Fork-Sub-Prozess hat und Sie sich für den gesamten Speicher interessieren, der vom Prozess verwendet wird. zb google chrome startet mehrere prozesse und sie möchten wissen, wie viel speicher von chrome belegt ist. Ich fand unten einen Zeilenbefehl sehr nützlich
Es kümmert sich um viele Dinge, wie das Anzeigen des Speichers in MB, das Sortieren nach Speicher und hauptsächlich das Gruppieren nach Befehlen. Es gruppiert auch% CPU und% Speicher. Es zeigt Daten in benutzerfreundlichem Format.
Dieser Befehl wurde von dieser Antwort inspiriert und hat mir sehr geholfen, eine Vorstellung davon zu bekommen, welcher Prozess meine Ressourcen beansprucht.
quelle