coffee_cn

博客园 首页 新随笔 联系 订阅 管理

转载(谢谢作者):http://blog.csdn.net/marcolu/archive/2004/07/07/36539.aspx

 

今天想写一个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了,其他属于业余作业,呵呵!

 

后续:其实shell根本就无法处理小数,我现在将脚本修改如下,以免误导大家,真的太不好意思了:

#!/bin/sh
A=`uptime|awk -F"," '{print $4}' |awk '{print $3}'`
B=`echo $A |awk '$1>9 { printf($1); }'`
if [ "$B" = "$A" ]
then
      ......
fi
posted on 2008-12-09 11:42  coffee  阅读(804)  评论(0)    收藏  举报