Mejorando el comando cyberciti.biz para mostrar una respuesta más 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 ejemplo de salida:
COMM PID SWAP
dockerd 662 2736 kB
skypeforlinux 26865 1320 kB
NetworkManager 303 1112 kB
slim 392 1028 kB
redis-server 350 204 kB
Desde aquí:
[a] /proc/meminfo - Este archivo informa estadísticas sobre el uso de la memoria en el sistema. Free lo utiliza para informar la cantidad de memoria libre y utilizada (tanto física como de intercambio) en el sistema, así como la memoria compartida y los búferes utilizados por el núcleo. También puede usar vmstat y otras herramientas gratuitas para encontrar la misma información.
[b]/proc/${PID}/smaps, /proc/${PID}/status y /proc/${PID}/stat :use estos archivos para encontrar información sobre la memoria, las páginas y el intercambio utilizado por cada proceso usando su PID.
[c] smeme - Este comando (secuencia de comandos de python) informa el uso de la memoria con la memoria compartida dividida proporcionalmente.
También puede consultar Descubra qué está usando su intercambio
#!/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"