Advertisement
Guest User

memuse

a guest
Jul 19th, 2015
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 1.24 KB | None | 0 0
  1. #!/bin/sh
  2. cd /proc 2>/dev/null || exit
  3. printf "%10s %10s %10s %10s %10s %-15s %s\n" "pid" "ram (kB)" "swap (kB)" "total (kB)" "shm (kB)" "name" "cmdline"
  4. for pid in [0-9]*; do
  5.     cd "/proc/$pid" 2>/dev/null || continue
  6.     rss=`cut -f2 -d' ' statm 2>/dev/null`
  7.     test -z "$rss" && rss=0
  8.     rss=$((rss*4))
  9.     shared=`cut -f3 -d' ' statm 2>/dev/null`
  10.     test -z "$shared" && shared=0
  11.     shared=$((shared*4))
  12.     ram=$((rss-shared))
  13.     if grep -q '^VmSwap:' status 2>/dev/null; then
  14.         swap=`sed -n 's/^VmSwap:\s*\(.*\)\s.*$/\1/p' status 2>/dev/null`
  15.     elif grep -q '^Swap:' smaps 2>/dev/null; then
  16.         swap=`sed -n 's/^Swap:\s*\(\S*\)\s*kB$/\1/p' smaps 2>/dev/null | tr '\n' '+' | sed 's/+$/\n/'`
  17.         swap=$(($swap))
  18.     fi
  19.     if test -z "$swap"; then
  20.         swap="unknown"
  21.         total=$ram
  22.     else
  23.         total=$((ram+swap))
  24.     fi
  25.     if test -f comm; then
  26.         name=`cat comm 2>/dev/null`
  27.     elif grep -q '^\S*\s(\S*)\s' stat; then
  28.         name=`sed 's/^\S*\s(\(\S*\))\s.*$/\1/' stat`
  29.     else
  30.         name=`readlink exe 2>/dev/null`
  31.         if test -z "$name"; then
  32.             name="unknown"
  33.         else
  34.             name=`basename $name`
  35.         fi
  36.     fi
  37.     cmdline=`cat cmdline 2>/dev/null | tr '\000' ' '`
  38.     printf "%10s %10s %10s %10s %10s %-15s %s\n" "$pid" "$ram" "$swap" "$total" "$shared" "$name" "$cmdline"
  39. done | sort -k4 -n -r
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement