最近我们的程序总会出现没有任何报错就会停止工作,也没有日志输出了。
所以今天针对没有日志输出这个问题写了个shell脚本来监控程序,当程序没有日志输出的时候就给运维人员发送邮件。
环境是centos7,tomcat7,jdk1.7。
一 首先配置mail
1.安装mail
yum -y install mailx
2.调整配置文件
vi /etc/mail.rc
在最后两行增加如下语句
set from=abc@qq.com smtp=smtp.exmail.qq.com
set smtp-auth-user=abc@nstc.com.cn smtp-auth-password=xxxxx smtp-auth=login
其中smtp=smtp.exmail.qq.com 要根据直接情况调整
3.是用命令发送邮件
例如给abc@qq.com.cn发送主题test内容为hello world的邮件
echo "hello world" |mail -s test abc@qq.com
二 编写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 abc@qq.com
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