当前位置: 首页 > 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.dtcms.com/a/330920.html

相关文章:

  • 通过 GitHub520 项目自动获取最新 Hosts 配置,无需手动查询 IP。
  • 语义 HTML 的核心价值:提升 SEO 与 AI 理解
  • 肖臻《区块链技术与应用》第14-15讲 超越货币:以太坊如何用“智能合约”开启去中心化应用时代
  • 备战亚马逊“Prime Big Deal Days”:卖家如何解锁年末增长密钥?
  • 2025年大模型安全岗的面试汇总(题目+回答)
  • 回归算法:驱动酒店智能化定价与自动化运营的引擎—仙盟创梦IDE
  • 不同ide回到上一个文件快捷键
  • STM32--寄存器与标准库函数--通用定时器--输出比较(PWM生成)
  • 区块链在可信空间智能合约中的应用
  • 在IAR Embedded Workbench for Arm中实现NXP S32K3安全调试
  • python sqlite3模块
  • iOS App TF上架全流程实战 高效内测分发与IPA包管理
  • 【KALI】第一篇 安装Kali Linux虚拟机之详细操作步骤讲解
  • Elasticsearch RBAC 配置:打造多租户环境的安全访问控制
  • 一篇文章读懂.Net的依赖注入
  • 应用银行卡识别技术,构建更安全、便捷的数字身份认证与支付生态
  • LeetCode hot 100 day1
  • springboot+vue实现通过poi完成excel
  • 云计算-多服务集群部署实战指南:从JumpServer到Kafka、ZooKeeper 集群部署实操流程
  • MySQL流程处理函数
  • 计算机视觉Open-CV
  • Swift 实战:用链表和哈希表写出高性能的贪吃蛇引擎(LeetCode 353)
  • 力扣-1143.最长公共子序列
  • 【LeetCode 热题 100】295. 数据流的中位数——最大堆和最小堆
  • 前端开发如何优化 SEO:常见问题及解决方案全解析​
  • JMeter性能测试详细版(适合0基础小白学习--非常详细)
  • 简单好用的桌面时钟—— Digital Clock 4
  • 飞算JavaAI开发全流程解析:从自然语言到可运行工程的智能进化
  • [Android] 二十四节气日历v1.0.3 - 弘扬传统文化,精致设计,无广告纯净体验!
  • 考研408《计算机组成原理》复习笔记,第五章(3)——CPU的【数据通路】