#!/bin/bash
#< Script to display top 20 process swap utilisation in KB
TMP_TOPRC="/var/tmp/toprc"
MY_TOPRC="${HOME}/.toprc"
MY_TOPRC_BAK="/var/tmp/${LOGNAME}_toprc_$$"
TOP_OUT="/var/tmp/topout_$$"
trap "recover_toprc; exit 1" 1 2 3 15
recover_toprc() {
if [ -e "${MY_TOPRC_BAK}" ]; then
mv ${MY_TOPRC_BAK} ${MY_TOPRC} 2>/dev/null
else
rm -f ${MY_TOPRC}
rm -f ${TOP_OUT}
fi
}
cat <<EoTOPRC >${TMP_TOPRC}
OAbcDgHIjklMnTP|qrsuzyV{EFW[X
5HIP
EoTOPRC
if [ -e "${MY_TOPRC}" ]; then
cp -p ${MY_TOPRC} ${MY_TOPRC_BAK}
fi
mv ${TMP_TOPRC} ${MY_TOPRC}
top -b -n1 > ${TOP_OUT}
sed '1,13d' ${TOP_OUT} > ${TOP_OUT}.tmp && mv ${TOP_OUT}{.tmp,}
perl -e "printf (\"%s\n\",\"=\"x50);
print \"Top 20 Processes by Swap Utilisation (KB)\n\";
printf (\"%s\n\",\"=\"x50);"
awk '
$1 ~ /^[0-9][0-9]*M/ {
sub( /M/, "", $1 )
$1 = $1 * 1024
} {
printf( "%d\t%s\t%s\n", $1, $2, $NF )
}
' ${TOP_OUT} | sort -k1,1rn | sed -n '1,20p' > ${TOP_OUT}.tmp && mv ${TOP_OUT}{.tmp,}
awk '
BEGIN {
printf( "%s\t%s\t%s\n%s\t%s\t%s\n", "SWAP", "PID", "PROCESS", "====", "===", "=======" );
}
' && cat ${TOP_OUT}
recover_toprc
rm -f ${TOP_OUT}
exit 0