Miglioramento del comando cyberciti.biz per mostrare una risposta più concisa:
(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
Un output di esempio:
COMM PID SWAP
dockerd 662 2736 kB
skypeforlinux 26865 1320 kB
NetworkManager 303 1112 kB
slim 392 1028 kB
redis-server 350 204 kB
Da qui:
[a] /proc/meminfo - Questo file riporta le statistiche sull'utilizzo della memoria nel sistema. Viene utilizzato da free per segnalare la quantità di memoria libera e utilizzata (sia fisica che di scambio) sul sistema, nonché la memoria condivisa ei buffer utilizzati dal kernel. Puoi anche utilizzare gratuitamente, vmstat e altri strumenti per trovare le stesse informazioni.
[b]/proc/${PID}/smaps, /proc/${PID}/status e /proc/${PID}/stat :Usa questi file per trovare informazioni su memoria, pagine e swap usati da ogni processo usando il suo PID.
[c] smem - Questo comando (script python) riporta l'utilizzo della memoria con la memoria condivisa divisa proporzionalmente.
Inoltre puoi fare riferimento a Scopri cosa sta usando il tuo scambio
#!/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"