在 Tomcat 中,catalina.sh
(Linux/macOS)或 catalina.bat
(Windows)是 核心的启动和关闭脚本,用于控制 Tomcat 服务器的运行。它是 Tomcat 的"主控脚本",负责设置环境变量、启动/关闭 JVM 进程,并传递参数给 Tomcat 的核心组件。
catalina.sh
的主要功能
-
启动/停止 Tomcat
-
通过
start
、stop
、run
等命令控制 Tomcat 生命周期。 -
例如:
bash./catalina.sh start # 后台启动 Tomcat ./catalina.sh run # 前台启动(日志输出到控制台) ./catalina.sh stop # 停止 Tomcat
-
-
设置 JVM 和 Tomcat 环境变量
-
加载
setenv.sh
(如果存在)来配置自定义环境变量(如JAVA_OPTS
、CATALINA_OPTS
)。 -
例如,在
setenv.sh
中配置 JVM 内存:bashexport JAVA_OPTS="-Xms512M -Xmx1024M"
-
-
传递参数给 Tomcat 的 Bootstrap 类
- 最终会调用 Java 的
org.apache.catalina.startup.Bootstrap
类来启动 Tomcat。
- 最终会调用 Java 的
-
管理日志输出
- 控制标准输出/错误日志的路径(默认重定向到
logs/catalina.out
)。
- 控制标准输出/错误日志的路径(默认重定向到
-
调试支持
- 支持调试模式(如
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 |
指定日志输出文件 |
注意事项
-
不要直接修改
catalina.sh
自定义配置应通过setenv.sh
或JAVA_OPTS
实现。 -
权限问题
确保脚本有可执行权限:bashchmod +x *.sh
-
多实例部署
通过CATALINA_BASE
区分不同实例的配置。
总结
catalina.sh
是 Tomcat 的核心控制脚本,负责:
✅ 启动/停止服务器
✅ 配置 JVM 和 Tomcat 环境
✅ 管理日志和调试
建议通过 setenv.sh
自定义配置,而非直接修改该脚本。