前言
在日常运维工作中,保障业务系统持续稳定运行是重中之重。尤其在运行关键应用时,一旦Tomcat服务出现异常中止,可能会导致严重的业务中断。因此,本文将介绍一种基于Shell脚本的自动监控与自启机制,并配合crontab
实现定时检测与自动恢复,适用于部署在linux环境下的服务器,特别适合部署在高性能的香港云服务器中,保障服务的可用性。
一、Tomcat监控与重启脚本编写
以下是一个实用的Tomcat自动监控脚本,它会定时检测指定服务是否存活,如未检测到进程或页面响应异常,将自动重启服务。
#!/bin/sh
TomcatID=$(ps -ef | grep tomcat | grep -w 'tomcat_ds_api' | grep -v 'grep' | awk '{print $2}')
StartTomcat=/usr/local/tomcat_ds_api/bin/startup.sh
webUrl=https://xx.com/test.txt
TomcatMonitorLog=/tmp/TomcatMonitor.log
Monitor() {
echo "[info] 监控启动中...[$(date +'%F %H:%M:%S')]"
if [[ $TomcatID ]]; then
echo "[info] 检测到tomcat进程ID: $TomcatID,验证服务可用性..."
TomcatServiceCode=$(curl -s -o /dev/null -m 10 --connect-timeout 10 $WebUrl -w %{http_code})
if [ $TomcatServiceCode -eq 200 ]; then
echo "[info] 返回状态码$TomcatServiceCode,页面响应正常,服务稳定。"
else
echo "[error] 页面异常,状态码:$TomcatServiceCode,尝试重启服务..."
$StartTomcat
fi
else
echo "[error] 未检测到Tomcat进程,立即执行自启操作..."
$StartTomcat
fi
echo "------------------------------"
}
Monitor >> $TomcatMonitorLog
授权并修改文件格式
保存为 monitor.sh
,并赋予执行权限:
chmod +x monitor.sh
若遇到 /bin/sh^M: bad interpreter
错误,可用以下命令修复:
vi monitor.sh
:set ff=unix
:wq
二、通过Crontab实现定时任务调度
为了实现定时自动监控,我们可借助crontab
创建周期性任务。
安装与启动crontab服务(以CentOS为例)
yum install vixie-cron
service crond start
chkconfig --level 35 crond on
添加定时任务
编辑crontab
计划任务表:
crontab -e
添加如下行,实现每分钟执行一次脚本:
*/1 * * * * /work/monitor.sh
保存后即可实现24小时不间断监控Tomcat服务的能力,非常适合部署在性能稳定、网络连接高速的香港独立服务器上,确保业务服务的持续可用。
三、实际测试效果
关闭Tomcat服务:
ps -ef | grep java
kill -9 [PID]
然后观察日志输出:
tail -f /tmp/TomcatMonitor.log
如输出如下内容:
[error] tomcat进程不存在!tomcat开始自动重启...
[info] /usr/local/tomcat_ds_api/bin/startup.sh,请稍候......
说明脚本已成功识别服务中断并进行了自动修复。
四、总结与应用建议
通过上述方案,技术人员无需频繁手动检查Tomcat状态,节省大量运维成本。尤其在使用香港VPS托管重要应用时,配合此类监控脚本能有效防止因服务宕机造成的用户体验下降及业务损失。
此外,配合高可用架构部署于优质的数据中心,如香港本地的BGP多线节点服务器,将进一步提高访问速度与稳定性,特别适合跨境业务、外贸电商、游戏服务等对网络连接敏感的场景。
如需部署在高性能、低延迟的服务器环境中,推荐使用我们提供的 香港云服务器、香港独立服务器,享受稳定、高速、安全的网络服务支持。