summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHorus32014-12-16 17:19:41 +0100
committerHorus32014-12-16 17:19:41 +0100
commit564e1f1ef4d3770c396c9f1630facc3387495cf2 (patch)
tree5b2d0072692d6b4e89f9c4b03bbce9832f55679f
parentdd9a6048bb109494072d94281701ad9734d2b275 (diff)
downloaddotfiles-564e1f1ef4d3770c396c9f1630facc3387495cf2.tar.gz
Added script to check swap and memory usage.
-rwxr-xr-xbin/checkswap.sh73
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