Advertisement
Guest User

Untitled

a guest
May 25th, 2015
235
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 3.63 KB | None | 0 0
  1. #!/bin/sh
  2.  
  3. IFS='|'
  4. processes=${processes:="apache2|transmission-da|Plex New Transc|Plex Media Serv|Plex DLNA Serve|python|smbd|munin-graph|blank"}
  5.  
  6. #processchecker=$( for proc in $processes; do
  7. #       checker=$(echo $proc | awk -F. '{gsub(/[ -]/, "", $1);gsub(/-/, "", $2); print$1".value "0.00} ')
  8. #               echo $checker | head -n -1
  9. #done)
  10.  
  11. graphorder=$(
  12.         graphvar=$(
  13.                 procgraph=$( for proc in $processes; do
  14.                                 echo -n $proc","
  15.                                 done)
  16.                 echo $procgraph | awk -F, '{gsub(/[ -]/, "", $0); print$0}'
  17.                                 )
  18.                 echo $graphvar | awk '{gsub(/[,]/, " ",$0); print$0}' | rev | cut -c 7- | rev )
  19.  
  20. if [ "$1" = "config" ]; then
  21.  
  22.         NCPU=$(egrep '^cpu[0-9]+ ' /proc/stat | wc -l)
  23.         PERCENT=$(($NCPU * 100))
  24.         if [ "$scaleto100" = "yes" ]; then
  25.                 graphlimit=100
  26.         else
  27.                 graphlimit=$PERCENT
  28.         fi
  29.  
  30. #        SYSWARNING=`expr $PERCENT '*' 30 / 100`
  31. #        SYSCRITICAL=`expr $PERCENT '*' 50 / 100`
  32. #        USRWARNING=`expr $PERCENT '*' 80 / 100`
  33.  
  34.         echo 'graph_title CPU usage by process'
  35.         echo 'graph_order' $graphorder
  36.         echo 'graph_scale no'
  37.         echo 'graph_vlabel %'
  38.         echo 'graph_args --base 1000 -r --lower-limit 0 --upper-limit' $graphlimit
  39.         echo 'graph_category system'
  40.         echo 'graph_info This graph shows the cpu usage of several processes'
  41.         echo ''
  42. #
  43. #use this to get process names for labels
  44. #
  45.  
  46.         proclist=$(      for proc in $processes; do
  47.                           echo "$proc.$proc"
  48. done)
  49.         #get proc name + .label
  50.         labels=$(echo $proclist | awk -F. '{gsub(/[ -]/, "", $1); print$1".label "$1} ')
  51.                 echo $labels | head -n -1
  52.         #get proc name + .info
  53.         infos=$(echo $proclist | awk -F. '{gsub(/[ -]/, "", $1); print$1".info "$1} ')
  54.                 echo $infos | head -n -1
  55.  
  56.         #get procname + .draw + type
  57.         singleproc=$(echo $proclist | awk -F. '{gsub(/[ -]/, "", $1); print$1} ')
  58.  
  59. #       echo $singleproc
  60. draws=$(        for x in $processes; do
  61.         firstproc=$(echo $proclist | awk -F. 'FNR == 1 {gsub(/[ -]/, "", $1); print$1 } ')
  62.                         if [ "$x" = "$firstproc" ]
  63.                         then
  64.                         echo $x | awk -F. '{gsub(/[ -]/, "", $1); print$1".draw AREA"} '
  65.                         else
  66.                         echo $x | awk -F. '{gsub(/[ -]/, "", $1); print$1".draw STACK"} '
  67.                         fi
  68. done)
  69.                 echo $draws | head -n -1
  70.  
  71.  
  72. else
  73.  
  74. #
  75. #use this to get process cpu % value
  76. #
  77.  
  78. TMPFILE=$(mktemp -t top.XXXXXXXXXX) && {
  79.  
  80.   top -b -n2 > $TMPFILE
  81.  
  82. topcount=$(awk 'END{print NR}' $TMPFILE)
  83. tophalf=$(expr $topcount / 2)
  84. toplist=$(tail -n$tophalf $TMPFILE)
  85.  
  86.  
  87. IFS='|'
  88. proc_basevalue=$(   for proc in $processes; do
  89.  lastproc=$(echo $processes | awk '{print$NF} ')
  90.                         if [ "$proc" = "$lastproc" ]
  91.                         then
  92.                         :
  93.                         else
  94.                         echo $proc | awk -F. '{gsub(/[ -]/, "", $1); print$1".value 0.00"} '
  95.                         fi
  96.  
  97. done)
  98.  
  99. proc_value=$(   for proc in $processes; do
  100.         compressed=$(echo $toplist | grep "$proc" | awk '{gsub(/[ -]/, "", $12); print $12$13$14 ".value " $9}')
  101.         echo $compressed
  102. done)
  103.  
  104. proc_added=$(
  105. echo $proc_basevalue
  106. echo $proc_value
  107. )
  108.  
  109. formatted=$(echo $proc_added | awk 'NF {a[$1]+=$2*1}END{for (x in a)printf "%s %.2f\n", x,a[x]}')
  110. echo $formatted
  111.  
  112.  
  113.  
  114. rm -f $TMPFILE
  115. }
  116.  
  117.  
  118. fi
  119.  
  120.  
  121. exit 0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement