Verbesserung des cyberciti.biz-Befehls, um eine prägnantere Antwort anzuzeigen:
(echo "COMM PID SWAP"; for file in /proc/*/status ; do awk '/^Pid|VmSwap|Name/{printf $2 " " $3}END{ print ""}' $file; done | grep kB | grep -wv "0 kB" | sort -k 3 -n -r) | column -t
Eine Beispielausgabe:
COMM PID SWAP
dockerd 662 2736 kB
skypeforlinux 26865 1320 kB
NetworkManager 303 1112 kB
slim 392 1028 kB
redis-server 350 204 kB
Von hier:
[a] /proc/meminfo - Diese Datei gibt Statistiken über die Speicherauslastung des Systems aus. Es wird von free verwendet, um die Menge an freiem und belegtem Speicher (sowohl physisch als auch ausgelagert) auf dem System sowie den gemeinsam genutzten Speicher und die vom Kernel verwendeten Puffer zu melden. Sie können auch kostenlose, vmstatund andere Tools verwenden, um dieselben Informationen zu erhalten.
[b]/proc/${PID}/smaps, /proc/${PID}/status und /proc/${PID}/stat :Verwenden Sie diese Dateien, um Informationen über Speicher, Seiten und Swap zu finden, die von jedem Prozess anhand seiner PID verwendet werden.
[c] smem - Dieser Befehl (Python-Skript) meldet die Speichernutzung mit dem gemeinsam genutzten Speicher, der proportional geteilt wird.
Sie können auch auf Finden Sie heraus, was Ihren Swap verwendet verweisen
#!/bin/bash
# Get current swap usage for all running processes
# Erik Ljungstrom 27/05/2011
SUM=0
OVERALL=0
for DIR in `find /proc/ -maxdepth 1 -type d | egrep "^/proc/[0-9]"` ; do
PID=`echo $DIR | cut -d / -f 3`
PROGNAME=`ps -p $PID -o comm --no-headers`
for SWAP in `grep Swap $DIR/smaps 2>/dev/null| awk '{ print $2 }'`
do
let SUM=$SUM+$SWAP
done
echo "PID=$PID - Swap used: $SUM - ($PROGNAME )"
let OVERALL=$OVERALL+$SUM
SUM=0
done
echo "Overall swap used: $OVERALL"