Linux使用shell脚本监控主机

本篇博文主要讲述如何通过df、mpstat、free查看系统的磁盘、内存及CPU使用情况,并在crontab的控制下,每30分钟执行脚本,当达到一定的值时通过邮件进行报警。

1.首先,在根目录创建脚本文件sysmon.sh

vim ./sysmon.sh

 

插入以下shell代码:

#!/bin/bash

dug=$(df -h | grep "/$" | awk '{print $5}' | awk -F% '{print $1}')

cug=$(expr $(mpstat | tail -1 | awk '{print $10}' | awk -F. '{print $1}'))

total=$(expr $(free | grep "Mem:" | awk '{print $2}'))

free=$(expr $(free | grep "Mem:" | awk '{print $4}'))

mug=$(awk 'BEGIN{printf "%.0f\n",('$free'/'$total')*100}')

alog="/tmp/alert.txt"

EMAIL="root@localhost.localdomain"

if [ $dug -ge 90 ]

then

echo "磁盘占用率:$dug%" >> $alog

fi

if [ $cug -ge 80 ]

then

echo "CPU使用率:$cug%" >> $alog

fi

if [ $mug -ge 90 ]

then

echo "内存使用率:$mug%" >> $alog

fi

if [ -f $alog ]

then

cat $alog | mail -s "系统报警" $EMAIL

rm -fr $alog

fi

 

接着给sysmon.sh赋予可执行权限

chmod +x ./sysmon.sh

 

执行一下,看是否正确运行

	  ./sysmon.sh

如果执行出错,可能是系统邮件配置错误,执行以下步骤:

vim  /etc/postfix/main.cf

发现配置为:

inet_interfaces = localhost

inet_protocols = all

改成:

 

inet_interfaces = all

inet_protocols = all

重新启动

 

service postfix start

查看邮件消息

	mail

这时可以看到是否报警,输入next或邮件编号可查看邮件内容

	next     

最后设置crontab每半小时运行脚本:crontab -e,填入以下代码

30 * * * * /sysmon.sh
  1. test says:
    WebView Android 7.1.1

    测试

  2. Lincoo says:
    Google Chrome 66.0.3359.170 Mac OS X 10.13.4

    试试评论~

  3. Lincoo says:
    Google Chrome 66.0.3359.170 Mac OS X 10.13.4

    :huaji16:

    1. Teair says:
      Google Chrome 68.0.3440.106 Mac OS X 10.13.4

      啊??

Leave a Reply to Lincoo Cancel reply

Your email address will not be published. Required fields are marked *