Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/sh
- IFS='|'
- processes=${processes:="apache2|transmission-da|Plex New Transc|Plex Media Serv|Plex DLNA Serve|python|smbd|munin-graph|blank"}
- #processchecker=$( for proc in $processes; do
- # checker=$(echo $proc | awk -F. '{gsub(/[ -]/, "", $1);gsub(/-/, "", $2); print$1".value "0.00} ')
- # echo $checker | head -n -1
- #done)
- graphorder=$(
- graphvar=$(
- procgraph=$( for proc in $processes; do
- echo -n $proc","
- done)
- echo $procgraph | awk -F, '{gsub(/[ -]/, "", $0); print$0}'
- )
- echo $graphvar | awk '{gsub(/[,]/, " ",$0); print$0}' | rev | cut -c 7- | rev )
- if [ "$1" = "config" ]; then
- NCPU=$(egrep '^cpu[0-9]+ ' /proc/stat | wc -l)
- PERCENT=$(($NCPU * 100))
- if [ "$scaleto100" = "yes" ]; then
- graphlimit=100
- else
- graphlimit=$PERCENT
- fi
- # SYSWARNING=`expr $PERCENT '*' 30 / 100`
- # SYSCRITICAL=`expr $PERCENT '*' 50 / 100`
- # USRWARNING=`expr $PERCENT '*' 80 / 100`
- echo 'graph_title CPU usage by process'
- echo 'graph_order' $graphorder
- echo 'graph_scale no'
- echo 'graph_vlabel %'
- echo 'graph_args --base 1000 -r --lower-limit 0 --upper-limit' $graphlimit
- echo 'graph_category system'
- echo 'graph_info This graph shows the cpu usage of several processes'
- echo ''
- #
- #use this to get process names for labels
- #
- proclist=$( for proc in $processes; do
- echo "$proc.$proc"
- done)
- #get proc name + .label
- labels=$(echo $proclist | awk -F. '{gsub(/[ -]/, "", $1); print$1".label "$1} ')
- echo $labels | head -n -1
- #get proc name + .info
- infos=$(echo $proclist | awk -F. '{gsub(/[ -]/, "", $1); print$1".info "$1} ')
- echo $infos | head -n -1
- #get procname + .draw + type
- singleproc=$(echo $proclist | awk -F. '{gsub(/[ -]/, "", $1); print$1} ')
- # echo $singleproc
- draws=$( for x in $processes; do
- firstproc=$(echo $proclist | awk -F. 'FNR == 1 {gsub(/[ -]/, "", $1); print$1 } ')
- if [ "$x" = "$firstproc" ]
- then
- echo $x | awk -F. '{gsub(/[ -]/, "", $1); print$1".draw AREA"} '
- else
- echo $x | awk -F. '{gsub(/[ -]/, "", $1); print$1".draw STACK"} '
- fi
- done)
- echo $draws | head -n -1
- else
- #
- #use this to get process cpu % value
- #
- TMPFILE=$(mktemp -t top.XXXXXXXXXX) && {
- top -b -n2 > $TMPFILE
- topcount=$(awk 'END{print NR}' $TMPFILE)
- tophalf=$(expr $topcount / 2)
- toplist=$(tail -n$tophalf $TMPFILE)
- IFS='|'
- proc_basevalue=$( for proc in $processes; do
- lastproc=$(echo $processes | awk '{print$NF} ')
- if [ "$proc" = "$lastproc" ]
- then
- :
- else
- echo $proc | awk -F. '{gsub(/[ -]/, "", $1); print$1".value 0.00"} '
- fi
- done)
- proc_value=$( for proc in $processes; do
- compressed=$(echo $toplist | grep "$proc" | awk '{gsub(/[ -]/, "", $12); print $12$13$14 ".value " $9}')
- echo $compressed
- done)
- proc_added=$(
- echo $proc_basevalue
- echo $proc_value
- )
- formatted=$(echo $proc_added | awk 'NF {a[$1]+=$2*1}END{for (x in a)printf "%s %.2f\n", x,a[x]}')
- echo $formatted
- rm -f $TMPFILE
- }
- fi
- exit 0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement