1. 借助vmstat工具监控CPU利用率
#!/bin/bash
DATE=$(date +%F" "%H:%M) //查询脚本执行的日期赋值
MAIL="example@mail.com" // 定义一个邮箱用来接受CPU信息
if ! which vmstat &>/dev/null; then //判断vmstat 命令是否存在
echo "vmstat command no found, Please install procps package." exit 1
fi
US=$(vmstat |awk 'NR==3{print $13}') //用户进程使用CPU的时间
SY=$(vmstat |awk 'NR==3{print $14}') //系统进程使用CPU的时间
USE=$(($US+$SY)) //CPU的使用时间
if [ $USE -ge 50 ]; then //判断CPU的进程使用时间是否大于50,大于50就打印时间和CPU进程的使用时间发送给指定的邮箱
echo "
Date: $DATE
CPU utilization $USE " | mail -s "CPU Monitor" $MAIL
fi
2. 用free命监控内存
#!/bin/bash
DATE=$(date +%F" "%H:%M)
MAIL="example@mail.com"
TOTAL=$(free -m |awk '/Mem/{print $2}') //内存总的大小
USE=$(free -m |awk '/Mem/{print $3-$6}') //使用的物理内存大小(used - buff-cache)
FREE=$(($TOTAL-$USE)) // 内存小于1G发送报警邮件
if [ $FREE -lt 1024 ]; then
echo " Date: $DATE
Total=$TOTAL,
Use=$USE,
Free=$FREE " | mail -s "Memory Monitor" $MAIL
fi