一个关于程序死掉发送邮件的脚本

    最近我们的程序总会出现没有任何报错就会停止工作,也没有日志输出了。

    所以今天针对没有日志输出这个问题写了个shell脚本来监控程序,当程序没有日志输出的时候就给运维人员发送邮件。

    环境是centos7,tomcat7,jdk1.7。

   一  首先配置mail

   1.安装mail
      yum -y install mailx
   2.调整配置文件
     vi /etc/mail.rc
     在最后两行增加如下语句
     set [email protected] smtp=smtp.exmail.qq.com
     set [email protected] smtp-auth-password=xxxxx smtp-auth=login
     其中smtp=smtp.exmail.qq.com 要根据直接情况调整
   3.是用命令发送邮件
     例如给[email protected]发送主题test内容为hello world的邮件
     echo "hello world" |mail -s test [email protected]

  二  编写shell脚本内容如下

    vi check.sh

    #!/bin/bash
   CPATH=/root/abc
   SPATH=/root
   while [ ! -e $SPATH/filesize.txt ];do
      touch $SPATH/filesize.txt
      echo 0 >$SPATH/filesize.txt
   done
   a=`ls -l $CPATH/* |awk '{sum+=$5}END{print sum}'`
   b=`cat $SPATH/filesize.txt`
   if [ "$a" -eq "$b" ]
   then
    echo "bp-server is down" |mail -s warnning [email protected]
    sed -i '/check.sh/s/\*\/30/#\*\/30/g' /var/spool/cron/root
   fi
   echo $a > $SPATH/filesize.txt

   其中CPATH为日志存放路径SPATH为脚本存放路劲根据实际情况进行修改。这里设置没半小时执行一次。发送邮件以后为避免反复发送这里用 sed -i '/check.sh/s/\*\/30/#\*\/30/g' /var/spool/cron/root送邮件以后将对应的crontab 中的内容注释。

  三 设置计划任务

    crontab -e

     */30 * * * * sh /root/check.sh

你可能感兴趣的:(一个关于程序死掉发送邮件的脚本)