脚本功能:每5分钟监控服务进程,本次进程为3个tomcat服务,当服务挂起时,发送报警邮件,并启动服务
1:创建日志文件脚本
[[email protected] ~]# cat a.sh
#!/bin/bash
b=a.`date +%Y%m%d-%T`.log
echo -n "-------------------------$b"
[[email protected] ~]# sh a.sh
-------------------------a.20150604-18:04:20.log
2:创建服务启动脚本
#!/bin/bash
b=a.`date +%Y%m%d-%T`.log
#sh /opt/apache-tomcat-6.0.35/bin/startup.sh && tail -f /opt/apache-tomcat-6.0.35/logs/catalina.out >> $b &
sh /opt/apache-tomcat-6.0.35/bin/startup.sh >> $b &
sleep 30
echo "tomcat8081 start ********************************************************************" >>$b &
#sh /opt/apache-tomcat-6.0.35_8082/bin/startup.sh && tail -f /opt/apache-tomcat-6.0.35_8082/logs/catalina.out >> $b &
##如果采用tail 日志输出,会把所有的日志都输入到这个文件中##
sh /opt/apache-tomcat-6.0.35_8082/bin/startup.sh >> $b &
sleep 60
echo "tomcat8082 start over********************************************************************" >>$b &
#sh /opt/apache-tomcat-6.0.35_8083/bin/startup.sh && tail -f /opt/apache-tomcat-6.0.35_8083/logs/catalina.out >>$b &
sh /opt/apache-tomcat-6.0.35_8083/bin/startup.sh >>$b &
sleep 90
echo "tomcat8083 start ********************************************************************" >>$b &
3.通过外部smtp服务,发送报警短信
yum -y install mailx
yum -y install sendmail
启动sendmail服务。
service sendmail start
配置mail.rc外部smtp服务
set [email protected]
set smtp=mail.qq.com
set [email protected]
set smtp-auth-password=qq
set smtp-auth=login
测试echo java stop,please check | mail -s "title" [email protected]
我们看到上面邮件已经发送成功!
4:修改服务启动脚本,当服务挂起得时候,发送报警短信,并启动服务
start_java(){
killall -9 java
b=a.`date +%Y%m%d-%T`.log
sh /opt/apache-tomcat-6.0.35/bin/startup.sh && tail -f /opt/apache-tomcat-6.0.35/logs/catalina.out >> $b &
sleep 30
echo "tomcat8081 start ********************************************************************" >>$b &
sh /opt/apache-tomcat-6.0.35_8082/bin/startup.sh && tail -f /opt/apache-tomcat-6.0.35_8082/logs/catalina.out >> $b &
echo "tomcat8082 start **********************************************************************" >>$b &
sh /opt/apache-tomcat-6.0.35_8083/bin/startup.sh && tail -f /opt/apache-tomcat-6.0.35_8083/logs/catalina.out >>$b &
echo "tomcat8083 start **************************************************************************" >>$b &
}
proess_num=`ps -C java --no-header|wc -l`
if [ $proess_num -ne 3 ];then
echo "‘HOSTNAME=$HOSTNAME‘ ‘$IP‘ error,please check" | mail -s "wheat-conver" [email protected] [email protected]
start_java
fi
5:加入定时任务,每5分钟检测一次
crontab -e
5:mail命令的用法简介
使用mail发邮件时,必须先将sendmail服务启动。
mail –s “邮件主题” –c”抄送地址” –b “密送地址” -- -f 发送人邮件地址 –F 发件人姓名 < 要发送的邮件内容
mail -s test [email protected] #第一种方法,你可以把当前shell当成编辑器来用,编辑完内容后Ctrl-D结束
echo “mail content”|mail -s test [email protected] #第二种方法,我用的最多,可能是喜欢管道的缘故吧
mail -s test [email protected] < file #第三种方法,以file的内容为邮件内容发信