#!/bin/bash exec 2>/dev/null total=0 printf "pid\t\tprocess\t\tmemory (kB)\n" while read -r me do ps=$(cat $me/comm) res1=$? val=($(grep "^VmSwap" $me/status)) res2=$? p=$(basename $me) if [[ $res1 -eq 0 && $res2 -eq 0 ]]; then if [ ${val[1]} -ne 0 ]; then printf "%d\t\t%s\t\t%s\n" "$p" "$ps" "${val[1]}" let total=$total+${val[1]} fi fi done < <(find /proc/ -mindepth 1 -maxdepth 1 -type d -name "[0-9]*" ) echo "Total(kB):$total"
Sample output (processes not sorted by their memory usage)