linux系统监控

#########################################################################
# File Name: memory_monitor.sh
# Author: wangrun04
# mail: wangrun20088002@126.com
# Created Time: Thu 16 Apr 2015 06:58:02 PM PDT
#########################################################################
#!/bin/bash


#maximun ratio of memory usage
mem_quota=80
hd_quota=80


watch_memory()
{
    mem_total=`cat /proc/meminfo |grep MemTotal | awk '{print $2}'`
    mem_free=`cat /proc/meminfo |grep MemFree |awk '{print $2}'`
    mem_usage=$((100-mem_free*100/mem_total))
    if [ $mem_usage -gt $mem_quota ];then 
        mem_message="ALARM!!!The memory usage is $mem_usage!!!"
        echo $mem_message
        return 1
    else 
        echo 'ok'
        return 0
    fi
}


watch_hd()
{
    hd_usage=`df |grep /dev/sda1 | awk '{print $5}' |sed 's/%//g'`
    if [ $hd_usage -gt $hd_quota ];then
        hd_message="ALARM!!!The hard disk usage is $hd_usage%!!!"
        echo $hd_message 
        return 1 
    else
        echo 'ok'
        return 0
    fi 
}


cpu_quota=80
time_gap=60
runtime_gap=600


get_cpu_info()
{
    cat /proc/sta |grep -i "^cpu[0-9]\+" |\
        awk '{used+=$2+$3+$3; unused+=$5+$6+$7+$8} END{print used,unused}'
}


watch_cpu()
{
    time_point_1=`get_cpu_info`
    sleep $time_gap
    time_point_2=`get_cpu_info`
    cpu_usage=`echo $time_point_1 $time_point_2|\
        awk '{used=$3-$1;total=$3+$4-$1-$2;print used*100/total}'`
    if [ $cpu_usage > $cpu_quota ];then
        cpu_message="ALARM!!!The cpu usage id over $cpu_usage"
        echo $cpu_usagee
        return 1
    else
        echo $cpu_usage
        return 0
    fi
}


proc_cpu_top_10()
{
    proc_busiest=`ps -aux| sort -nk 3r | head -11`
}


while true;do
    report=""
if [ `watch_memory` -eq 1 ];then
    report=$report'\n'$mem_message


fi
if [ `watch_hd` -eq 1 ];then
    report=$report'\n'$hd_message
fi
if [ `watch_cpu` -eq 1 ];then
    report=$report'\n'$cpu_message
    proc_cpu_top_10
    report=$report'\n'$proc_busiest
fi
if [ -n $report ];then
    sendmessage phonenumber report 
fi
sleep $((runtime-gap_time_gap))
done


















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值