watchCpu.sh
==========
#!/bin/bash
sleepTime=60
logfile=cpu_yjk.log
if [ -f "$logfile" ];
then
rm cpu_yjk.log
fi
exec 1>$logfile
processName="watchCpu.sh"
title="load"
coretitle=`mpstat | grep -o -e '%.*'`
#print title
printf "%s," `date +%Y-%m-%d_%H:%M:%S`
printf "%6s," $title
printf "%12s(ave/max/min/mdev)," $coretitle
printf "%12s(ave/max/min/mdev)," $processName
printf "\n"
while true
do
load=`uptime | awk -F: '{print $NF}'|awk -F, '{print $1}'`
corevalue=`mpstat -P ALL|grep -v -i ALL|grep -o -e '[0-9][0-9]*\..*\.[0-9]*[0-9]$'|awk -v col=9 -f cal.awk`
processValue=`ps aux |grep $processName|grep -v grep|awk '{print $3}'|awk -v col=1 -f cal.awk`
#print value
printf "%s," `date +%Y-%m-%d_%H:%M:%S`
printf "%6.2f," $load
printf "%30s," $corevalue
printf "%30s," $processValue
printf "\n"
sleep $sleepTime
done
=============================================================================
cal.awk
========
BEGIN {
for(i=1;i<=col;i++){
sum[i] = 0;
squsum[i] = 0;
max[i] = 0;
min[i] = 1000000;
}
}
{
for(j=1;j<=col;j++) {
tmp = $j
sum[j] += tmp
squsum[j] += tmp*tmp
if(max[j]<tmp)
max[j] = tmp
if(min[j]>tmp)
min[j] = tmp
}
}
END {
for(k=1;k<=col;k++) {
ave = sum[k]/NR
mdev = sqrt(squsum[k]/NR-ave*ave)
printf("%.2f/%.2f/%.2f/%.2f "), ave,max[k],min[k],mdev
}
}
==========================================================================
output.log
=========
2012-07-27_18:45:23, load, %user(ave/max/min/mdev), %nice(ave/max/min/mdev), %sys(ave/max/min/mdev), %iowait(ave/max/min/mdev), %irq(ave/max/min/mdev), %soft(ave/max/min/mdev), %steal(ave/max/min/mdev), %idle(ave/max/min/mdev), intr/s(ave/max/min/mdev), watchCpu.sh(ave/max/min/mdev),
2012-07-27_18:45:23, 0.02, 21.11/23.12/20.07/0.94, 0.00/0.00/0.00/0.00, 2.46/2.67/2.32/0.10, 0.42/1.99/0.05/0.63, 0.04/0.19/0.00/0.07, 1.93/2.26/1.47/0.27, 0.00/0.00/0.00/0.00, 73.89/74.95/72.18/0.76, 297.39/1208.74/35.19/442.41, 0.00/0.00/0.00/0.00,
2012-07-27_18:46:23, 0.15, 21.11/23.12/20.07/0.94, 0.00/0.00/0.00/0.00, 2.46/2.67/2.32/0.10, 0.42/1.99/0.05/0.63, 0.04/0.19/0.00/0.07, 1.93/2.26/1.47/0.27, 0.00/0.00/0.00/0.00, 73.89/74.95/72.18/0.76, 297.38/1208.68/35.19/442.39, 0.00/0.00/0.00/0.00,
2012-07-27_18:47:23, 0.41, 21.11/23.12/20.07/0.94, 0.00/0.00/0.00/0.00, 2.46/2.67/2.32/0.10, 0.42/1.99/0.05/0.63, 0.04/0.19/0.00/0.07, 1.93/2.26/1.47/0.27, 0.00/0.00/0.00/0.00, 73.89/74.95/72.18/0.76, 297.37/1208.62/35.19/442.37, 0.00/0.00/0.00/0.00,
2012-07-27_18:48:23, 0.15, 21.11/23.12/20.07/0.94, 0.00/0.00/0.00/0.00, 2.46/2.67/2.32/0.10, 0.42/1.99/0.05/0.63, 0.04/0.19/0.00/0.07, 1.93/2.26/1.47/0.27, 0.00/0.00/0.00/0.00, 73.89/74.95/72.18/0.76, 297.35/1208.56/35.19/442.35, 0.00/0.00/0.00/0.00,
2012-07-27_18:49:23, 0.14, 21.11/23.12/20.07/0.94, 0.00/0.00/0.00/0.00, 2.46/2.67/2.32/0.10, 0.42/1.99/0.05/0.63, 0.04/0.19/0.00/0.07, 1.93/2.26/1.47/0.27, 0.00/0.00/0.00/0.00, 73.89/74.95/72.18/0.76, 297.34/1208.50/35.19/442.32, 0.00/0.00/0.00/0.00,
2012-07-27_18:50:23, 0.10, 21.11/23.11/20.06/0.94, 0.00/0.00/0.00/0.00, 2.46/2.67/2.32/0.10, 0.42/1.99/0.05/0.63, 0.04/0.19/0.00/0.07, 1.93/2.26/1.47/0.27, 0.00/0.00/0.00/0.00, 73.89/74.95/72.18/0.76, 297.33/1208.45/35.19/442.31, 0.00/0.00/0.00/0.00,