Advertisement
Guest User

Untitled

a guest
May 25th, 2015
261
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 2.92 KB | None | 0 0
  1. #!/bin/bash
  2. IFS='|'
  3. processes=${processes:="apache2|transmission-da|Plex New Transc|Plex Media Serv|Plex DLNA Serve|python|smbd|munin-graph|tmux"}
  4. graphorder=$(
  5.         graphvar=$(
  6.                 procgraph=$( for proc in $processes; do
  7.                                 echo -n $proc","
  8.                                 done)
  9.                 echo $procgraph | awk -F, '{gsub(/[ -]/, "", $0); print$0}'
  10.                                 )
  11.                 echo $graphvar | awk '{gsub(/[,]/, " ",$0); print$0}')
  12. if [ "$1" = "config" ]; then
  13.         NCPU=$(egrep '^cpu[0-9]+ ' /proc/stat | wc -l)
  14.         PERCENT=$(($NCPU * 100))
  15.                 if [ "$scaleto100" = "yes" ]; then
  16.                         graphlimit=100
  17.                 else
  18.                          graphlimit=$PERCENT
  19.          fi
  20.         echo 'graph_scale no'
  21.         echo 'graph_title Process CPU utilisation'
  22.         echo 'graph_order' $graphorder
  23.         echo 'graph_vlabel %'
  24.         echo 'graph_args --base 1000 -r --lower-limit 0 --upper-limit' $graphlimit
  25.         echo 'graph_category processes'
  26.         echo 'graph_info This graph shows the cpu usage of multiple processes'
  27.  
  28.         proclist=$(      for proc in $processes; do
  29.                           echo "$proc.$proc"
  30.         done)
  31.  
  32.         #get proc name + .label
  33.         labels=$(echo $proclist | awk -F. '{gsub(/[ -]/, "", $1);gsub(/[ -]/, "_", $2); print$1".label "$2} ')
  34.                 echo $labels | sed 's/^[^A-Za-z_]/_/'
  35.         #get proc name + .info
  36.         infos=$(echo $proclist | awk -F. '{gsub(/[ -]/, "", $1);gsub(/[ -]/, "_",$2); print$1".info "$2" process"} ')
  37.                 echo $infos | sed 's/^[^A-Za-z_]/_/'
  38.         #get procname + .draw + type
  39.         draws=$(        for x in $processes; do
  40.         firstproc=$(echo $proclist | awk -F. 'FNR == 1 {gsub(/[ -]/, "", $1); print$1 } ')
  41.                         if [ "$x" = "$firstproc" ]
  42.                         then
  43.                         echo $x | awk -F. '{gsub(/[ -]/, "", $1); print$1".draw AREA"} '
  44.                         else
  45.                         echo $x | awk -F. '{gsub(/[ -]/, "", $1); print$1".draw STACK"} '
  46.                         fi
  47.         done)
  48.                 echo $draws | sed 's/^[^A-Za-z_]/_/'
  49.         else
  50.  
  51.         TMPFILE=$(mktemp -t top.XXXXXXXXXX) && {
  52.  
  53.         top -b -n2 > $TMPFILE
  54.  
  55.         topcount=$(awk 'END{print NR}' $TMPFILE)
  56.         tophalf=$(expr $topcount / 2)
  57.         toplist=$(tail -n$tophalf $TMPFILE)
  58.  
  59.  
  60.         proc_value=$(   for proc in $processes; do
  61.         if grep "$proc" $TMPFILE; then
  62.                         :
  63.                 else
  64.                         echo "0 0 0 0 0 0 0 0 0.0 0 0 $proc"
  65.                 fi
  66.         done)
  67.  
  68. echo $proc_value | awk '{gsub(/[ -]/, "", $12);gsub(/[ -]/, "", $13);gsub(/[ -]/, "", $14); print $12$13$14 ".value " $9}' | awk 'NF {a[$1]+=$2*1}END{for (x in a)printf "%s %.1f\n", x,a[x]}' | sed 's/^[^A-Za-z_]/_/'
  69.  
  70.  
  71.  
  72. rm -f $TMPFILE
  73. }
  74. fi
  75. exit 0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement