Amélioration de la commande cyberciti.biz pour afficher une réponse plus concise :
(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 exemple de sortie :
COMM PID SWAP
dockerd 662 2736 kB
skypeforlinux 26865 1320 kB
NetworkManager 303 1112 kB
slim 392 1028 kB
redis-server 350 204 kB
À partir d'ici :
[a] /proc/meminfo - Ce fichier rapporte des statistiques sur l'utilisation de la mémoire sur le système. Il est utilisé par free pour signaler la quantité de mémoire libre et utilisée (à la fois physique et d'échange) sur le système ainsi que la mémoire partagée et les tampons utilisés par le noyau. Vous pouvez également utiliser gratuitement vmstat et d'autres outils pour trouver les mêmes informations.
[b]/proc/${PID}/smaps, /proc/${PID}/status et /proc/${PID}/stat :Utilisez ces fichiers pour trouver des informations sur la mémoire, les pages et le swap utilisés par chaque processus à l'aide de son PID.
[c] smem - Cette commande (script python) signale l'utilisation de la mémoire avec la mémoire partagée divisée proportionnellement.
Vous pouvez également consulter Découvrez ce qui utilise votre swap
#!/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"