当前位置: 首页 > news >正文

tomcat 定时重启

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" ]; thenecho "$(date): Killing process with PID: $PID" >> "$LOG_FILE"kill -9 $PIDif [ $? -eq 0 ]; thenecho "$(date): Process $PID killed successfully." >> "$LOG_FILE"elseecho "$(date): Failed to kill process $PID." >> "$LOG_FILE"fisleep 5
elseecho "$(date): No process found for tomcat-gosi with IP 10.26.203.95." >> "$LOG_FILE"
fi# 重启 Tomcat 直到成功启动
MAX_ATTEMPTS=5
attempt=1while [ $attempt -le $MAX_ATTEMPTS ]; doecho "$(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; thenecho "$(date): Tomcat is running." >> "$LOG_FILE"exit 0elseecho "$(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"#fiattempt=$((attempt + 1))# 等待 5 秒再重试sleep 5  
doneecho "$(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
http://www.lryc.cn/news/620417.html

相关文章:

  • LeetCode 1780:判断一个数字是否可以表示成3的幂的和-进制转换解法
  • 【Java虚拟机】JVM相关面试题
  • 网页加载缓慢系统排查与优化指南
  • pnpm常用命令;为什么使用pnpm?
  • 【STM32入门教程】stm32简介
  • Day56--图论--108. 冗余的边(卡码网),109. 冗余的边II(卡码网)
  • QLab Pro for Mac —— 专业现场音频与多媒体控制软件
  • 【BFS】P9065 [yLOI2023] 云梦谣|普及+
  • Spark Shuffle机制原理
  • 云蝠智能 VoiceAgent:重构物流售后场景的智能化引擎
  • 标贝科技「十万音色·自然语音数据集」 重构AI语音训练基础设施
  • 基于vue.js的无缝滚动
  • 系统设计——DDD领域模型驱动实践
  • rustdesk 开源遥控软件
  • 【深度学习计算性能】04:硬件
  • 医疗AI问答系统实战:知识图谱+大模型的融合应用开发
  • Trae x Figma MCP一键将设计稿转化为精美网页
  • 【python】类型注解
  • CICD-Devops整合Kubernetes-4
  • 深入学习Autosar之BswM模块
  • 4.2 Vue3中reactive与ref详解及区别
  • 云计算-多服务集群部署实战指南:从JumpServer到Kafka、ZooKeeper 集群部署实操流程
  • 命名空间——网络(net)
  • 4.1vue3的setup()
  • EtherCAT概念介绍
  • 防抖 debounce.js
  • Synology File Station 官方 API 指南总结(中文版)
  • windows 资源管理器缩略图 ,支持.MP4(H.265/HEVC编码)视频格式和.HEIC(HEIF)图片格式的软件
  • 《吃透 C++ 类和对象(中):拷贝构造函数与赋值运算符重载深度解析》
  • Cypher注入详解:原理、类型与测试方法