Tomcat里catalina.sh详解

在 Tomcat 中,catalina.sh (Linux/macOS)或 catalina.bat (Windows)是 核心的启动和关闭脚本,用于控制 Tomcat 服务器的运行。它是 Tomcat 的"主控脚本",负责设置环境变量、启动/关闭 JVM 进程,并传递参数给 Tomcat 的核心组件。


catalina.sh 的主要功能

  1. 启动/停止 Tomcat

    • 通过 startstoprun 等命令控制 Tomcat 生命周期。

    • 例如:

      bash 复制代码
      ./catalina.sh start   # 后台启动 Tomcat
      ./catalina.sh run     # 前台启动(日志输出到控制台)
      ./catalina.sh stop    # 停止 Tomcat
  2. 设置 JVM 和 Tomcat 环境变量

    • 加载 setenv.sh(如果存在)来配置自定义环境变量(如 JAVA_OPTSCATALINA_OPTS)。

    • 例如,在 setenv.sh 中配置 JVM 内存:

      bash 复制代码
      export JAVA_OPTS="-Xms512M -Xmx1024M"
  3. 传递参数给 Tomcat 的 Bootstrap 类

    • 最终会调用 Java 的 org.apache.catalina.startup.Bootstrap 类来启动 Tomcat。
  4. 管理日志输出

    • 控制标准输出/错误日志的路径(默认重定向到 logs/catalina.out)。
  5. 调试支持

    • 支持调试模式(如 jpda start 启用远程调试)。

常见用法示例

1. 启动 Tomcat
bash 复制代码
cd $CATALINA_HOME/bin  # 进入 Tomcat 的 bin 目录
./catalina.sh start    # 后台启动
2. 前台运行(开发调试)
bash 复制代码
./catalina.sh run      # 日志直接输出到控制台
3. 停止 Tomcat
bash 复制代码
./catalina.sh stop     # 优雅关闭
4. 强制终止(kill)

如果 stop 无效,可以强制终止进程:

bash 复制代码
ps -ef | grep tomcat   # 查找 Tomcat 的 PID
kill -9 <PID>          # 强制终止
5. 启用远程调试
bash 复制代码
./catalina.sh jpda start  # 默认监听 8000 端口

与其他脚本的关系

  • startup.sh / shutdown.sh

    这两个脚本实际是 catalina.sh 的快捷方式:

    • startup.sh → 调用 catalina.sh start
    • shutdown.sh → 调用 catalina.sh stop
      直接使用 catalina.sh 更灵活。
  • setenv.sh

    自定义环境变量脚本(需手动创建),catalina.sh 会自动加载它。


关键环境变量

变量名 作用
CATALINA_HOME Tomcat 安装目录
CATALINA_BASE 多实例部署时的实例目录
JAVA_OPTS JVM 参数(内存、GC 等)
CATALINA_OPTS Tomcat 专属 JVM 参数
CATALINA_OUT 指定日志输出文件

注意事项

  1. 不要直接修改 catalina.sh
    自定义配置应通过 setenv.shJAVA_OPTS 实现。

  2. 权限问题
    确保脚本有可执行权限:

    bash 复制代码
    chmod +x *.sh
  3. 多实例部署
    通过 CATALINA_BASE 区分不同实例的配置。


总结

catalina.sh 是 Tomcat 的核心控制脚本,负责:

✅ 启动/停止服务器

✅ 配置 JVM 和 Tomcat 环境

✅ 管理日志和调试

建议通过 setenv.sh 自定义配置,而非直接修改该脚本。

相关推荐
lisw056 分钟前
计算与科学哲学(Philosophy of Computing and Science)
java·开发语言·人工智能
凤山老林7 分钟前
Spring Boot 集成 ShardingSphere-Encrypt 实现字段级实时脱敏
java·spring boot·后端·数据脱敏
vipxieliang7 分钟前
ValidX v1.2.0 更新日志
java·后端
叫我Paul就好42 分钟前
Spring 为何没有在 Java之外的地方存在?
java·后端·spring
xbgRS1 小时前
RocketMQ中的broker
java·rocketmq
晓晓_za8986682 小时前
Geo 优化源码二次开发:自定义地域规则改造实操文档
java·开发语言·搜索引擎·ci/cd·矩阵
摇滚侠2 小时前
《SpringBoot 3:入门与应用实战》第 8 章 AOP 的进阶机制和应用 阅读笔记 16
java·spring boot·笔记
AI人工智能+电脑小能手2 小时前
大白话说Java设计模式-38-迭代器模式(业务实战篇)
java·设计模式·迭代器模式·stream·遍历封装·集合通用·分页遍历
QQ_21696290962 小时前
【源码编号:project86570】SpringBoot电影院在线选座售票系统:电影排片、在线选座、订单购票、后台管理完整实战
java·spring boot·后端
谢亮_vipxieliang2 小时前
手机号验证技术方案:号段规则与正则表达式
java·服务器·spring boot·正则表达式·hibernate