- 论坛徽章:
- 0
|
因WhatsUp 无法直接监控LINUX CPU的利用率 。所以只能先写个脚本,然后定义一个OID ,让WINDOWS 通过SNMP取值。
看了一些关于LINUX CPU 利用率算法的东西,然后硬着头皮写了我的第一个SHELL 。这里可能有两个问题。
1:CPU 的算法不是很确定
2:脚本需要优化。
希望哪位高人出来帮助修正修正。
#!/bin/bash
totala=`head -1 /proc/stat |awk '{print $2+$3+$4+$5+$6+$7+$8}'`
noidlea=`head -1 /proc/stat |awk '{print $2+$3+$4+$6+$7+$8}'`
idlea=`head -1 /proc/stat |awk '{print $5}'`
usera=`head -1 /proc/stat |awk '{print $2}'`
systema=`head -1 /proc/stat |awk '{print $2}'`
sleep 0.5
#b=`head -1 /proc/stat |awk '{print $2+$3+$4+$5+$6+$7+$8}'`
#bb=`head -1 /proc/stat |awk '{print $2+$3+$4+$6+$7+$8}'`
#bbb=`head -1 /proc/stat |awk '{print $5}'`
totalb=`head -1 /proc/stat |awk '{print $2+$3+$4+$5+$6+$7+$8}'`
noidlb=`head -1 /proc/stat |awk '{print $2+$3+$4+$6+$7+$8}'`
idleb=`head -1 /proc/stat |awk '{print $5}'`
userb=`head -1 /proc/stat |awk '{print $2}'`
systemb=`head -1 /proc/stat |awk '{print $2}'`
user=$[$userb-$usera]
total=$[$totalb-$totala]
idle=$[$idleb-$idlea]
system=$[$systemb-$systema]
usage=$[$user+$system]
tusage=$[$total-$idle]
bbbtest=$[$usage/$total]
# for debug
#echo user=$user
#echo total=$total
#echo idle=$idle
#echo system=$system
#echo usage=$usage
#echo $totala " " $totalb
echo "scale=2; ($usage*100/$total)"| bc
echo "scale=3; $idle*100/$total"| bc
echo "scale=3; $tusage*100/$total"| bc
因为有个WINDOWS 的软件要监控LINUX CPU ,
[ 本帖最后由 heiheijian 于 2007-11-9 16:46 编辑 ] |
|