1,环境准备工作:
我们采用的操作系统是centOS7.0,安装mailx 插件用来发送邮件通知;
命令如下:
yum install mailx
安装完成之后,执行测试命令如下:
echo "Message Body" | mail -s "Message Subject" receiver@example.com
把邮箱换成你自己的邮箱,然后你会收到一份邮件;
这样,mailx 安装成功;
2,编写脚本监测工作:
因为我们采用的是docker 部署,所以我们监测的是docker容器:监测脚本如下:
#!/bin/bash
cd monitor --先进入当前的路径,执行
while read line;do
eval "$line"
done < itg-monitor
switch=$flag
echo $switch
line=$(docker ps | grep 容器名称)
if [ -z "$line" ]
then
echo "not running"
if [ "$switch"x = "y"x ]
then
echo "ofbiz-ess is not running" | mail -s "容器名称 is not running and attempt to restart automatically" 邮箱地址
docker restart ofbiz-ess
else
echo "容器名称 is not running but do nothing"
echo "容器名称 is not running" | mail -s "ofbiz-ess is not running but do nothing!" 邮箱地址
fi
else
echo "running"
fi
因为监测脚本读取配置文件,获取开关标识,配置文件如下:
flag=y
定时执行任务,我们采用的是crontab 来定时执行任务:
编写cron文件:
*/5 * * * * /root/monitor/itg-monitor.sh
这个意思是每5分钟执行一次;
itg-monitor.sh 就是上面的监测脚本
最后,记住定时任务需要安装:
crontab cron文件名称;
然后查看定时任务的命令:
crontab -l
现在才发现,之前定时任务执行不成功,是因为没有先进入当前的目录;