# iterate over /proc/PID entries and find out Rss and Swap values, run as: # ./checkswap | sort -nr > checkswap.out for pid in `find /proc -type d -maxdepth 1`; do fn="$pid/smaps" if [ -f "$fn" ]; then nam=`cat $pid/cmdline` sumT=0; for each in `grep Rss $fn | sed -n 's/^Rss:\s*\(\S*\)\s*kB$/\1/p'`;\ do sumT=$(( $sumT + $each )); done sumS=0; for each in `grep Swap $fn | sed -n 's/^Swap:\s*\(\S*\)\s*kB$/\1/p'`;\ do sumS=$(( $sumS + $each )); done echo "$sumT<->$sumS<->$nam ($pid)" fi done