今天想写一个shell脚本,目的是监控load average,当load average高于7.5了,就重启resin。一直怀疑resin2.*的版本在高利用率下会使得java被锁死。因此系统很不稳定,但是尝试升级到resin3又需要改动线上的java代码,因为resin3对于java的要求更严格了。很多代码都不严格。因此暂时的替代办法是半个小时运行监控程序。
但是写监控程序的时候又碰到问题了,shell处理小数我居然不会。我的脚本是这样的:
#!/bin/sh
A=`uptime|awk -F"," '{print $4}' |awk '{print $3}'`
B=7.50
C=`expr $A \> $B`
if [ $C -eq 1 ]
then
/usr/local/resin/bin/restart.sh
echo `date` >> /usr/local/resin/logs/monitor.log
fi
这样写至少可以正确表达我的意思。但是问题是我在写这段代码时想测试判断小数点的加减乘除却怎么也不行。
bash-2.03# expr 8.8 \+ 9.9
expr: non-numeric argument
郁闷,明天再研究研究!不过大小能比较就ok了,其他属于业余作业,呵呵!