以下是一个可执行的 Linux 命令脚本,支持优雅停止 Tomcat 服务、等待 30 秒后重启,并包含错误处理机制:
bash
#!/bin/bash
# 停止 Tomcat 服务(支持多种方式)
sudo systemctl stop tomcat 2>/dev/null || \
sudo service tomcat stop 2>/dev/null || \
/path/to/tomcat/bin/shutdown.sh 2>/dev/null
# 等待30秒并监控进程终止
echo "Waiting for Tomcat to fully stop..."
for i in {1..30}; do
if ! pgrep -f "catalina" >/dev/null; then
break
fi
sleep 1
done
# 强制终止(如果正常停止失败)
if pgrep -f "catalina" >/dev/null; then
echo "Force stopping Tomcat..."
pkill -9 -f "catalina"
sleep 5
fi
# 重启服务(优先使用系统服务)
echo "Restarting Tomcat..."
sudo systemctl start tomcat 2>/dev/null || \
sudo service tomcat start 2>/dev/null || \
/path/to/tomcat/bin/startup.sh
# 验证服务状态
echo "Checking service status..."
sleep 3
if pgrep -f "catalina" >/dev/null; then
echo "Tomcat restarted successfully"
else
echo "Restart failed! Check logs at /path/to/tomcat/logs/catalina.out"
fi
功能说明 :
- 多方式停止服务 :优先尝试
systemctl
和service
命令(适用于系统服务管理),若失败则调用 Tomcat 自带的shutdown.sh
脚本 - 智能等待机制:30 秒倒计时期间持续监控进程状态,若提前终止则立即继续
- 强制终止保障:30 秒后仍有残留进程时自动执行强制终止
- 多方式重启:优先使用系统服务管理,兼容直接调用启动脚本
- 状态验证:最终会检查进程状态并提示日志查看路径
注意:具体服务名称(如
tomcat
/tomcat8
)和路径需根据实际环境调整。建议首次运行时添加-x
参数观察执行流程:bash -x restart_tomcat.sh