Ein Linux-Kommando, das den benutzten Swap-Space pro Prozess ausgeben würde, existiert nicht. Man kann sich aber leicht mit einem kleinen Shellskript behelfen, dass die nötigen Angaben aus dem Proc-Filesystem extrahiert. Eine Variante hat Erik Ljungstrom, der in London für eine Hostingfirma arbeitet, in seinem Blog vorgestellt:
#!/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"
Das weitgehend selbsterklärende Skript ermittelt zuerst die PIDs alle Prozesse aus "/proc" und sucht sich dann in einer Schleife dazu die Namen der Prozesse und den von ihnen benutzten Swap Space zusammen. Wer will, kann die Ausgaben noch mit "sort" auf die drei oder fünf am meisten swappenden Prozesse beschränken:
./getswap.sh | sort -n -k 5 | head -5