如何实现在Linux中使用shell脚本实时监控启动的tomcat服务同时实现宕机自动重启?
我们可以使用crond帮助我们实现,废话不多说直奔主题:
首先确定你的系统上安装了crond:
使用service crond status 查看crond的服务状态:
service crond start 启动crond服务:
如果没有安装crond请使用:
yum install vixie-cron 和yum install crontabs 安装;
以上准备完毕后:
编写你的监控脚本:
#!/bin/bash
array=("8030" "8050" "8060") #我的一台主机上安装了多个服务使用自定义数据确定要获取的PID
tomcatPath=/data/apache-tomcat- #tomcat解压路径前缀
ip=192.168.1.119: #本机服务器ip
pageInfo=/data/tmp/tomcatMonitor.info #监控时产生的页面
for data in ${array[@]} #for循环获取目标tomcat服务
do
#获取服务的状态码
stateCode=$(curl -s -w "%{http_code}" -o ${pageInfo} --connect-timeout 10 "${ip}${data}")
if [ $stateCode -eq 200 ];thenecho "端口号为${data}的服务启动状态为${stateCode}"
else
echo "[error]tomcat服务异常状态码为[${stateCode}],详情查看/data/tmp/tomcatMonitor.info"
PID=$(ps -ef|grep "${data}"|grep -v grep|awk '{print $2}')
kill -9 ${PID}
if [ ! -d ${tomcatPath}${data} ];then
ehco "${tomcatPath}${data}目录不存在"
else
echo "启动服务"
${tomcatPath}${data}/bin/startup.sh
ehco "启动完成"
fi
fi
sleep 1
done
脚本完成。使用chmod 755 脚本.sh 修改脚本的执行权限;
配置自动执行次脚本:
修改文件vi /etc/crontab
可以看到文件内容为:
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# For details see man 4 crontabs
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
* * * * * root 填写自己脚本的绝对路径.sh >> /data/tmp/sh.txt #输出的执行结果
#root 为此文件可执行的用户 ,上述脚本为每分钟执行一次。