Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/sh
- cd /proc 2>/dev/null || exit
- printf "%10s %10s %10s %10s %10s %-15s %s\n" "pid" "ram (kB)" "swap (kB)" "total (kB)" "shm (kB)" "name" "cmdline"
- for pid in [0-9]*; do
- cd "/proc/$pid" 2>/dev/null || continue
- rss=`cut -f2 -d' ' statm 2>/dev/null`
- test -z "$rss" && rss=0
- rss=$((rss*4))
- shared=`cut -f3 -d' ' statm 2>/dev/null`
- test -z "$shared" && shared=0
- shared=$((shared*4))
- ram=$((rss-shared))
- if grep -q '^VmSwap:' status 2>/dev/null; then
- swap=`sed -n 's/^VmSwap:\s*\(.*\)\s.*$/\1/p' status 2>/dev/null`
- elif grep -q '^Swap:' smaps 2>/dev/null; then
- swap=`sed -n 's/^Swap:\s*\(\S*\)\s*kB$/\1/p' smaps 2>/dev/null | tr '\n' '+' | sed 's/+$/\n/'`
- swap=$(($swap))
- fi
- if test -z "$swap"; then
- swap="unknown"
- total=$ram
- else
- total=$((ram+swap))
- fi
- if test -f comm; then
- name=`cat comm 2>/dev/null`
- elif grep -q '^\S*\s(\S*)\s' stat; then
- name=`sed 's/^\S*\s(\(\S*\))\s.*$/\1/' stat`
- else
- name=`readlink exe 2>/dev/null`
- if test -z "$name"; then
- name="unknown"
- else
- name=`basename $name`
- fi
- fi
- cmdline=`cat cmdline 2>/dev/null | tr '\000' ' '`
- printf "%10s %10s %10s %10s %10s %-15s %s\n" "$pid" "$ram" "$swap" "$total" "$shared" "$name" "$cmdline"
- done | sort -k4 -n -r
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement