监控文件系统示例脚本

[root@localhost shell]# cat monitor_disk.sh 
#!/bin/bash

#This script is used to monitor disk.
#2013/12/17

function disk_speed()
{
        A=`df -k | grep "$1" | awk '{print $3}'`
        sleep 30
        B=`df -k | grep "$1" | awk '{print $3}'`
        D=`expr $B - $A`
        SPEED=`expr $D / 30`
        echo $SPEED
        unset A B D SPEED
}

function avai_time()
{
        FREE=`df -k | grep "$1" | awk '{print $4}'`
        if TIME=`expr $FREE / $2`
        then
                if [ $TIME -ge 60 ]
                then
                        A=`expr $TIME / 60`
                        echo $A" minutes"
                        unset FREE TIME
                        return 0
                else
                        echo "Unkow"
                        unset FREE TIME
                        return 0
                fi
        else
                echo "Unknow"
                unset FREE TIME
                return 1
        fi
}

function content()
{
        TEMP_FILE=/root/disk_monitor.tmp
        echo "Warning disk:"$1 >$TEMP_FILE
        echo "Used space:"$2 >>$TEMP_FILE
        echo "Available space:"$3 >>$TEMP_FILE
        echo "Use%:"$4"%" >>$TEMP_FILE
        echo "Write speed:"$5 >>$TEMP_FILE
        echo "Estimated time remaining:"$6 >>$TEMP_FILE
        echo "Now time:"`date +"%Y-%m-%d %H:%M"` >>$TEMP_FILE
        unset TEMP_FILE
        return 0
}

MON_DISK=/dev/md0
USED=`df -h | grep "$MON_DISK" | awk '{print $5}' | sed 's/%//'`


then
        USED_SPACE=`df -h | grep "$MON_DISK" | awk '{print $4}'`
        AVAI_SPACE=`df -h | grep "$MON_DISK" | awk '{print $3}'`
        W_SPEED=`disk_speed $MON_DISK`
        if [ $W_SPEED != 0 ]
        then
                S_TIME=`avai_time $MON_DISK $W_SPEED`
        else
                S_TIME="Unknow"
        fi
        content $MON_DISK $USED_SPACE $AVAI_SPACE $USED $W_SPEED $S_TIME
        mail -s "Disk warning" root </root/disk_monitor.tmp
        rm -rf /root/disk_monitor.tmp
        unset MON_DISK USED USED_SPACE AVAI_SPACE W_SPEED S_TIME
fi

[root@localhost shell]# ./monitor_disk.sh 
./monitor_disk.sh: line 57: 

运行时出现上面的错误:

http://blog.csdn.net/goodlixueyong/article/details/6564591

针对本例(测试中是数值比较)的解决方案:

if [ $USED -ge 90 ]---> if [[ $USED -ge 90 ]]

修改后成功运行:

[root@localhost shell]# ./monitor_disk.sh 
[root@localhost shell]#

如果测试中是字符串比较,那么除了上面的解决方案外,还有另外的解决办法:

if [ $STATUS = OK ]--->if [ “$STATUS” = OK ]

详细解释,请参看《shell13问》中的第10问。

转载于:https://www.cnblogs.com/nufangrensheng/p/3479690.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值