脚本功能是获取CPU占用率,占用超过设定值则重启
运行结果,求大佬看看,while 和if 的判断都提示bad number ,是什么原因呢?
- root@OpenWrt:/# sh /root/CPU_detection.sh restart
- 1
- 12.43781094527363184100
- sh: 12.43781094527363184100: bad number
- 3
- 4
- sh: 2.49376558603491271900: bad number
- root@OpenWrt:/#
复制代码
脚本内容
- #!/bin/sh
- #gino
- #20150711
- #CPU占用过高自动重启
- CPULOG_1=`cat /proc/stat | head -n1 | awk '{print $2" "$3" "$4" "$5" "$6" "$7" "$8}'`
- SYS_IDLE_1=`echo $CPULOG_1 | awk '{print $4}'`
- Total_1=`echo $CPULOG_1 | awk '{print $1+$2+$3+$4+$5+$6+$7}'`
- sleep 1
- CPULOG_2=`cat /proc/stat | head -n1 | awk '{print $2" "$3" "$4" "$5" "$6" "$7" "$8}'`
- SYS_IDLE_2=`echo $CPULOG_2 | awk '{print $4}'`
- Total_2=`echo $CPULOG_2 | awk '{print $1+$2+$3+$4+$5+$6+$7}'`
- Total=`expr $Total_2 - $Total_1`
- SYS_IDLE=`expr $SYS_IDLE_2 - $SYS_IDLE_1`
- SYS_USAGE=`echo $SYS_IDLE/$Total*100 |bc -l`
- SYS_Rate=`echo 100-$SYS_USAGE |bc -l`
- echo '1'
- sleep 1
- echo ${SYS_Rate}
- #循环判断
- while [ ${SYS_Rate} -le 10 ]
- do
- echo '2'
- CPULOG_1=`cat /proc/stat | head -n1 | awk '{print $2" "$3" "$4" "$5" "$6" "$7" "$8}'`
- SYS_IDLE_1=`echo $CPULOG_1 | awk '{print $4}'`
- Total_1=`echo $CPULOG_1 | awk '{print $1+$2+$3+$4+$5+$6+$7}'`
- sleep 1
- CPULOG_2=`cat /proc/stat | head -n1 | awk '{print $2" "$3" "$4" "$5" "$6" "$7" "$8}'`
- SYS_IDLE_2=`echo $CPULOG_2 | awk '{print $4}'`
- Total_2=`echo $CPULOG_2 | awk '{print $1+$2+$3+$4+$5+$6+$7}'`
- Total=`expr $Total_2 - $Total_1`
- SYS_IDLE=`expr $SYS_IDLE_2 - $SYS_IDLE_1`
- SYS_USAGE=`echo $SYS_IDLE/$Total*100 |bc -l`
- SYS_Rate=`echo 100-$SYS_USAGE |bc -l`
- sleep 1
- done
- echo '3'
- #再次检测
- CPULOG_1=`cat /proc/stat | head -n1 | awk '{print $2" "$3" "$4" "$5" "$6" "$7" "$8}'`
- SYS_IDLE_1=`echo $CPULOG_1 | awk '{print $4}'`
- Total_1=`echo $CPULOG_1 | awk '{print $1+$2+$3+$4+$5+$6+$7}'`
- sleep 1
- CPULOG_2=`cat /proc/stat | head -n1 | awk '{print $2" "$3" "$4" "$5" "$6" "$7" "$8}'`
- SYS_IDLE_2=`echo $CPULOG_2 | awk '{print $4}'`
- Total_2=`echo $CPULOG_2 | awk '{print $1+$2+$3+$4+$5+$6+$7}'`
- Total=`expr $Total_2 - $Total_1`
- SYS_IDLE=`expr $SYS_IDLE_2 - $SYS_IDLE_1`
- SYS_USAGE=`echo $SYS_IDLE/$Total*100 |bc -l`
- SYS_Rate=`echo 100-$SYS_USAGE |bc -l`
- echo '4'
- #是否触发重启条件
- if [ ${SYS_Rate} -ge 10 ];then
- reboot
- else
- exit 0
- echo '5'
- fi
- #————————————————
- #版权声明:本文为CSDN博主「linux_zhu」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
- #原文链接:https://blog.csdn.net/u011641885/article/details/46845625
复制代码
请不要胡乱输入以及粘贴、复制等方式灌水
请尊重作者、并共同维护网站的正常阅读,否则账户将会被限制发帖、回帖,并且积分可能会被清零,站内短信以及阅读权限等都会受到影响,谢谢。
具体限制方式:https://www.right.com.cn/forum/thread-8307840-1-1.html
|