#!/bin/sh MYTICKS=100 MYINTERVAL=4 # we sample once every $MYINTERVAL seconds MYINVERSEINTERVAL=0.25 top -d $MYINVERSEINTERVAL -n $MYTICKS -b -i | grep Cpu | perl -e "while(<>) { split(','); \$load = 100 - substr @_[3], 0, -3; print \$load,\"\n\";}" > profile perl -e '$second=0; while(<>) { chop(); $load = $_; print "$second $load "; split " ", $load; print @_[0] + @_[1], "\n"; $second+=0.25;}' < profile > points echo "set grid set xrange [0: $(($MYTICKS/$MYINTERVAL))] set yrange [0: 101] set xtics 0,$MYINVERSEINTERVAL,$(($MYTICKS/$MYINTERVAL)) set xlabel \"time\" set ylabel \"CPU usage\" plot \"points\" using 1:2 with lines title 'total load' replot" > gplot.cmds gnuplot -persist gplot.cmds