Shell之监控cpu、内存、磁盘脚本

#!/bin/bash

#获取内存情况

mem_total=`free | awk 'NR==2{print $2}'`  #获取内存总大小
mem_use=`free  | awk 'NR==2{print $3}'`  #获取内存使用大小

#统计内存使用率 (使用大小/总大小)

mem_use_rate=`awk 'BEGIN{print('$mem_use'/'mem_total')*100}'`

#echo $mem_use_rate

#获取磁盘使用率
disk_use_rate=`df -h | grep /dev/vda1 | awk -F '[ %]+' '{print $5}'`

#echo $disk_use_rate

#获取cpu使用率
cpu_use_rate=`top -n 1 | grep Cpu |awk '{print $2}'`

#echo $cpu_use_rate

#报警时间
file_log=/home/error.log  #提前创建
now_time=`date '+%F %T'`

function send_mail(){

        mail -s "监控报警"      *******@qq.com < /home/error.log
}

function check(){

        if [[ "men_use_rate" > 80 ]] || [[ "disk_use_rate" > 5 ]] || [[ "cpu_use_rate" > 50 ]];then   
                echo "报警时间:"$now_time > $file_log
                echo "cpu使用率:${cpu_use_rate}% --> 磁盘使用率:${disk_use_rate}% --> 内存使用率:${men_use_rate}"
                send_mail
        fi
}

function main(){
        check
}
main

操作系统:centos7.5     上面获取的数据显示34,相当于34%   报警部分可根据情况自己写上面用的是sendmail(阿里云服务器上有限制,鼓捣半天才发现需要开通,好像还收费,果断放弃)

free

df -h

top -n 1 (top是实时监控,-n 1 显示那一时刻的数据)

你可能感兴趣的