tomcat 定时重启
1.编写脚本
su - tomcat
[tomcat@u1abomap02 ~]$ ls
restart_tomcat_gosi.sh tomcat_gosi.log
vi restart_tomcat_gosi.sh
#!/bin/bash
# 定义日志目录
LOG_DIR="/home/tomcat"
LOG_FILE="$LOG_DIR/tomcat_gosi.log"
# 设置环境变量(关键)
export JAVA_HOME=/usr/local/jdk1.6.0_43
export JRE_HOME=$JAVA_HOME/jre
export PATH=$JAVA_HOME/bin:$PATH
# 记录环境信息用于调试
echo "$(date): Starting restart script. JAVA_HOME=$JAVA_HOME, PATH=$PATH" >> "$LOG_FILE"
# 查找进程 ID
PID=$(pgrep -f "tomcat-gosi.*10.26.203.95")
# 检查是否找到进程
if [ -n "$PID" ]; then
echo "$(date): Killing process with PID: $PID" >> "$LOG_FILE"
kill -9 $PID
if [ $? -eq 0 ]; then
echo "$(date): Process $PID killed successfully." >> "$LOG_FILE"
else
echo "$(date): Failed to kill process $PID." >> "$LOG_FILE"
fi
sleep 5
else
echo "$(date): No process found for tomcat-gosi with IP 10.26.203.95." >> "$LOG_FILE"
fi
# 重启 Tomcat 直到成功启动
MAX_ATTEMPTS=5
attempt=1
while [ $attempt -le $MAX_ATTEMPTS ]; do
echo "$(date): Starting Tomcat (Attempt $attempt of $MAX_ATTEMPTS)..." >> "$LOG_FILE"
sh /soft/tomcat-gosi/bin/startup.sh >> "$LOG_FILE" 2>&1
# 等待启动
sleep 10
# 判断是否真正在运行
if pgrep -f "tomcat-gosi.*10.26.203.95" > /dev/null; then
echo "$(date): Tomcat is running." >> "$LOG_FILE"
exit 0
else
echo "$(date): Failed to start Tomcat (process not found)." >> "$LOG_FILE"
# 输出 Tomcat 错误日志片段
echo "$(date): Last 10 lines of catalina.out:" >> "$LOG_FILE"
tail -n 10 /soft/tomcat-gosi/logs/catalina.`date +%Y-%m-%d`.out >> "$LOG_FILE" 2>&1 || echo "catalina.out not accessible" >> "$LOG_FILE"
fi
#if [ $? -eq 0 ]; then
# echo "$(date): Tomcat started successfully." >> "$LOG_FILE"
# 成功启动后退出脚本
# exit 0
#else
# echo "$(date): Failed to start Tomcat on attempt $attempt." >> "$LOG_FILE"
#fi
attempt=$((attempt + 1))
# 等待 5 秒再重试
sleep 5
done
echo "$(date): Tomcat failed to start after $MAX_ATTEMPTS attempts." >> "$LOG_FILE"
# 超过最大尝试次数后退出脚本
exit 1
2.创建定时任务
[tomcat@u1abomap02 ~]$ crontab -l
35 7 * * 1-5 /home/tomcat/restart_tomcat_gosi.sh