首页主机资讯Ubuntu中Tomcat的自动重启怎么设置

Ubuntu中Tomcat的自动重启怎么设置

时间2025-11-25 18:44:03发布访客分类主机资讯浏览460
导读:Ubuntu中Tomcat自动重启的设置 一、推荐方式 systemd服务自恢复 适用于 Ubuntu 16.04 及以上,使用 systemd 管理进程,配置一次即可在崩溃或异常退出后自动拉起。 操作步骤: 创建服务文件 sudo n...

Ubuntu中Tomcat自动重启的设置

一、推荐方式 systemd服务自恢复

  • 适用于 Ubuntu 16.04 及以上,使用 systemd 管理进程,配置一次即可在崩溃或异常退出后自动拉起。
  • 操作步骤:
    1. 创建服务文件 sudo nano /etc/systemd/system/tomcat.service
    2. 写入示例配置(按需修改路径与用户)
      [Unit]
      Description=Apache Tomcat Web Application Container
      After=network.target
      
      [Service]
      Type=forking
      Environment=JAVA_HOME=/usr/lib/jvm/jdk1.8.0_151
      Environment=CATALINA_HOME=/opt/tomcat
      Environment=CATALINA_BASE=/opt/tomcat
      Environment='CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC'
      Environment='JAVA_OPTS=-Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom'
      ExecStart=/opt/tomcat/bin/startup.sh
      ExecStop=/opt/tomcat/bin/shutdown.sh
      User=tomcat
      Group=tomcat
      UMask=0007
      Restart=always
      RestartSec=10
      
      [Install]
      WantedBy=multi-user.target
      
    3. 使配置生效并启用 sudo systemctl daemon-reload sudo systemctl enable tomcat.service sudo systemctl start tomcat.service
    4. 常用命令 systemctl status tomcat.service journalctl -u tomcat.service -f
  • 说明:
    • 关键参数是 Restart=alwaysRestartSec=10,表示进程异常退出后 10 秒自动重启。
    • 如通过包管理器安装了 tomcat9,可直接使用系统单元(如 tomcat9.service),按需设置 Restart=always 并启用即可。

二、定时巡检脚本兜底(进程或页面不可达时重启)

  • 适用场景:希望有“看门狗”定期探测,进程假死或端口未监听时强制重启。
  • 操作步骤:
    1. 新建监控脚本 /usr/local/bin/monitor_tomcat.sh(示例为每 10 分钟检查一次)
      #!/bin/sh
      export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_151
      export PATH=$JAVA_HOME/bin:$PATH
      
      CATALINA_HOME=/opt/tomcat
      STARTUP=$CATALINA_HOME/bin/startup.sh
      SHUTDOWN=$CATALINA_HOME/bin/shutdown.sh
      LOG=/usr/local/tomcat/logs/monitor.log
      URL="http://127.0.0.1:8080/"
      
      # 按安装目录名精确匹配进程,避免误杀
      PID=$(ps -ef | grep -w "$CATALINA_HOME" | grep -v grep | awk '{
      print $2}
      ')
      
      ts() {
           echo "[$(date +'%F %T')] $*";
       }
          
      
      if [ -n "$PID" ];
       then
        code=$(curl -s -o /dev/null -w "%{
      http_code}
          " --connect-timeout 10 --max-time 20 "$URL")
        if [ "$code" = "200" ];
           then
          ts "Tomcat OK (PID=$PID, HTTP $code)"
        else
          ts "Tomcat unhealthy (HTTP $code), restarting..."
          $SHUTDOWN >
          /dev/null 2>
          &
          1
          sleep 5
          # 兜底强杀
          kill -9 $PID 2>
          /dev/null
          rm -f $CATALINA_HOME/temp/tomcat.pid 2>
          /dev/null
          $STARTUP >
          /dev/null 2>
          &
          1
        fi
      else
        ts "Tomcat not running, starting..."
        $STARTUP >
          /dev/null 2>
          &
          1
      fi
      
    2. 赋权并测试 chmod +x /usr/local/bin/monitor_tomcat.sh sudo /usr/local/bin/monitor_tomcat.sh
    3. 加入定时任务(root 用户) sudo crontab -e 加入:*/10 * * * * /usr/local/bin/monitor_tomcat.sh > > /usr/local/tomcat/logs/monitor_cron.log 2> & 1
  • 说明:
    • 通过检测 HTTP 200 判断应用是否可用,不可用时先优雅关闭再强杀并启动。
    • 日志建议单独落盘,便于排查。

三、定时重启(兜底维护,非首选)

  • 若确需按天/周重启以释放资源,可用 crontab 定时执行重启脚本。
  • 示例(每天 04:30 重启):
    1. 重启脚本 restart_tomcat.sh
      #!/bin/sh
      export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_151
      $CATALINA_HOME/bin/shutdown.sh >
          /dev/null 2>
          &
      1
      sleep 10
      kill -9 $(ps -ef | grep -w "$CATALINA_HOME" | grep -v grep | awk '{
      print $2}
          ') 2>
          /dev/null
      rm -f $CATALINA_HOME/temp/tomcat.pid 2>
          /dev/null
      $CATALINA_HOME/bin/startup.sh
      
    2. 赋权并加入计划任务 chmod +x /usr/local/bin/restart_tomcat.sh sudo crontab -e 加入:30 04 * * * /usr/local/bin/restart_tomcat.sh > > /usr/local/tomcat/logs/restart.log 2> & 1
  • 说明:
    • 定时重启能掩盖内存泄漏等问题,建议优先使用“自恢复 + 巡检”的组合策略。

四、旧系统兼容方式(sysvinit 或 Upstart)

  • 适用于 较老版本 Ubuntu(如 14.04 等),可将 Tomcat注册为系统服务并设置开机自启。
  • 基本步骤:
    1. /etc/init.d/ 下创建 tomcat 脚本(支持 start/stop/restart),设置可执行权限。
    2. 注册开机启动: sudo update-rc.d tomcat defaults 或使用 sysv-rc-conf 工具管理: sudo sysv-rc-conf tomcat on
  • 说明:
    • 新版本 Ubuntu 默认使用 systemd,仅在必要时才采用该方式。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Ubuntu中Tomcat的自动重启怎么设置
本文地址: https://pptw.com/jishu/755818.html
FTPServer在Linux下如何稳定运行 Ubuntu下Tomcat的集群配置怎么做

游客 回复需填写必要信息