I miei due centesimi: tempo fa trovai uno script che genera questo
Codice: Seleziona tutto
swap-usage
..............................................................................
Overall swap used: 871728 kB
========================================
kB pid name
========================================
233256 2597 okular
77568 23996 mysqld
72220 24562 amarok
57404 13282 thunderbird
56104 20021 firefox
38808 1066 akregator
27392 871 razor-desktop
22284 875 razor-panel
20864 916 knotify4
13928 788 kwin
12884 878 razor-runner
11484 7196 kaption
10772 23994 akonadiserver
...
che è questo:
Codice: Seleziona tutto
#!/bin/bash
# find-out-what-is-using-your-swap.sh
# -- Get current swap usage for all running processes
# --
# -- rev.0.3, 2012-09-03, Jan Smid - alignment and intendation, sorting
# -- rev.0.2, 2012-08-09, Mikko Rantalainen - pipe the output to "sort -nk3" to 0 get sorted output
# -- rev.0.1, 2011-05-27, Erik Ljungstrom - initial version
SCRIPT_NAME=`basename $0`;
SORT="kb"; # {pid|kB|name} as first parameter, [default: kb]
[ "$1" != "" ] && { SORT="$1"; }
[ ! -x `which mktemp` ] && { echo "ERROR: mktemp is not available!"; exit; }
MKTEMP=`which mktemp`;
TMP=`${MKTEMP} -d`;
[ ! -d "${TMP}" ] && { echo "ERROR: unable to create temp dir!"; exit; }
>${TMP}/${SCRIPT_NAME}.pid;
>${TMP}/${SCRIPT_NAME}.kb;
>${TMP}/${SCRIPT_NAME}.name;
SUM=0;
OVERALL=0;
echo "${OVERALL}" > ${TMP}/${SCRIPT_NAME}.overal;
for DIR in `find /proc/ -maxdepth 1 -type d -regex "^/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
if (( $SUM > 0 ));
then
echo -n ".";
echo -e "${PID}\t${SUM}\t${PROGNAME}" >> ${TMP}/${SCRIPT_NAME}.pid;
echo -e "${SUM}\t${PID}\t${PROGNAME}" >> ${TMP}/${SCRIPT_NAME}.kb;
echo -e "${PROGNAME}\t${SUM}\t${PID}" >> ${TMP}/${SCRIPT_NAME}.name;
fi
let OVERALL=$OVERALL+$SUM
SUM=0
done
echo "${OVERALL}" > ${TMP}/${SCRIPT_NAME}.overal;
echo;
echo "Overall swap used: ${OVERALL} kB";
echo "========================================";
case "${SORT}" in
name )
echo -e "name\tkB\tpid";
echo "========================================";
cat ${TMP}/${SCRIPT_NAME}.name|sort -r;
;;
kb )
echo -e "kB\tpid\tname";
echo "========================================";
cat ${TMP}/${SCRIPT_NAME}.kb|sort -rh;
;;
pid | * )
echo -e "pid\tkB\tname";
echo "========================================";
cat ${TMP}/${SCRIPT_NAME}.pid|sort -rh;
;;
esac
rm -fR "${TMP}/";
Poi ho configurato le colonne di top in modo di mostrarmi anche la swap in uso dei processi:
Codice: Seleziona tutto
KiB Mem: 3849464 total, 2295460 used, 1554004 free, 27840 buffers
KiB Swap: 5242876 total, 1163428 used, 4079448 free. 753756 cached Mem
PID USER S %CPU %MEM COMMAND SWAP
24562 stef S 31,2 2,5 amarok 72316
20021 stef S 29,5 13,6 firefox 55200
876 skype S 11,6 0,8 skype 60152
20813 stef S 10,9 2,4 ktorrent 0
602 root S 10,6 2,5 X 10660
20838 stef S 3,6 3,1 plugin-containe 0
788 stef S 2,7 0,6 kwin 13948
16751 stef S 1,3 1,0 konversation 912
874 stef S 1,0 0,4 yakuake 4456
1143 stef S 0,7 0,3 mlnet 2464