diff options
| author | Horus3 | 2014-12-16 17:19:41 +0100 |
|---|---|---|
| committer | Horus3 | 2014-12-16 17:19:41 +0100 |
| commit | 564e1f1ef4d3770c396c9f1630facc3387495cf2 (patch) | |
| tree | 5b2d0072692d6b4e89f9c4b03bbce9832f55679f | |
| parent | dd9a6048bb109494072d94281701ad9734d2b275 (diff) | |
| download | dotfiles-564e1f1ef4d3770c396c9f1630facc3387495cf2.tar.gz | |
Added script to check swap and memory usage.
| -rwxr-xr-x | bin/checkswap.sh | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/bin/checkswap.sh b/bin/checkswap.sh new file mode 100755 index 0000000..82ea867 --- /dev/null +++ b/bin/checkswap.sh @@ -0,0 +1,73 @@ +#!/bin/bash + +# order by +by="swap" + +# reverse sort +rev="r" + +if [ ! -z "$1" ]; then + case "$1" in + -s|--swap|swap) + by="swap" + shift + ;; + -m|--memory|mem|memory) + by="memory" + shift + ;; + -n|--name|-p|--process|--program|name|proc|process) + by="name" + rev="" + shift + ;; + -h|--help|help) + echo "Statistics about all running processes." + echo "Usage: $0 [OPTION]" + echo " swap sort by swap usage (default)" + echo " memory sort by memory usage" + echo " name sort by process name" + echo " help print this help message" + exit 0 + ;; + *) + echo "Unrecognized option \"$1\"" >&2 + echo "Try -h instead." + exit 1 + esac +fi + +echo "Check memory and swap usage for all programs sorted by $by." +echo "" + +# loop over all running programs +for CMD in $(top -bn1 | tail -n +8 | grep -v $(basename "$0") | awk '{print $12}' | sort | uniq) +do + swap_count=0 + mem_count=0 + + # loop over all pids and check for 'VmSize' and 'VmSwap' state in /proc/$PID/status + for tmp in $( for PID in $(pgrep $CMD 2>/dev/null); do grep -E 'Vm(Size|Swap)' /proc/$PID/status 2>/dev/null | paste - - | awk '{print $2 "|" $5}'; done ) + do + mem_count=$(($mem_count+$(echo $tmp | cut -d\| -f1))) + swap_count=$(($swap_count+$(echo $tmp | cut -d\| -f2))) + done + + # programs swap use is not null + if [ $swap_count -gt 0 ] + then + case "$by" in + swap) + echo "$swap_count kB (Swap): $CMD $mem_count kB (Memory)" + ;; + memory) + echo "$mem_count kB (Memory): $CMD $swap_count kB (Swap)" + ;; + name) + echo "$CMD: $mem_count kB (Memory) $swap_count kB (Swap)" + ;; + esac + fi + +# sort by swap usage +done | sort -k1 -t\ -h${rev} | column -t |
