在 Tomcat 中,catalina.sh
(Linux/macOS)或 catalina.bat
(Windows)是 核心的啟動和關閉腳本,用于控制 Tomcat 服務器的運行。它是 Tomcat 的“主控腳本”,負責設置環境變量、啟動/關閉 JVM 進程,并傳遞參數給 Tomcat 的核心組件。
catalina.sh
的主要功能
-
啟動/停止 Tomcat
- 通過
start
、stop
、run
等命令控制 Tomcat 生命周期。 - 例如:
./catalina.sh start # 后臺啟動 Tomcat ./catalina.sh run # 前臺啟動(日志輸出到控制臺) ./catalina.sh stop # 停止 Tomcat
- 通過
-
設置 JVM 和 Tomcat 環境變量
- 加載
setenv.sh
(如果存在)來配置自定義環境變量(如JAVA_OPTS
、CATALINA_OPTS
)。 - 例如,在
setenv.sh
中配置 JVM 內存:export JAVA_OPTS="-Xms512M -Xmx1024M"
- 加載
-
傳遞參數給 Tomcat 的 Bootstrap 類
- 最終會調用 Java 的
org.apache.catalina.startup.Bootstrap
類來啟動 Tomcat。
- 最終會調用 Java 的
-
管理日志輸出
- 控制標準輸出/錯誤日志的路徑(默認重定向到
logs/catalina.out
)。
- 控制標準輸出/錯誤日志的路徑(默認重定向到
-
調試支持
- 支持調試模式(如
jpda start
啟用遠程調試)。
- 支持調試模式(如
常見用法示例
1. 啟動 Tomcat
cd $CATALINA_HOME/bin # 進入 Tomcat 的 bin 目錄
./catalina.sh start # 后臺啟動
2. 前臺運行(開發調試)
./catalina.sh run # 日志直接輸出到控制臺
3. 停止 Tomcat
./catalina.sh stop # 優雅關閉
4. 強制終止(kill)
如果 stop
無效,可以強制終止進程:
ps -ef | grep tomcat # 查找 Tomcat 的 PID
kill -9 <PID> # 強制終止
5. 啟用遠程調試
./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
實現。 - 權限問題
確保腳本有可執行權限:chmod +x *.sh
- 多實例部署
通過CATALINA_BASE
區分不同實例的配置。
總結
catalina.sh
是 Tomcat 的核心控制腳本,負責:
? 啟動/停止服務器
? 配置 JVM 和 Tomcat 環境
? 管理日志和調試
建議通過 setenv.sh
自定義配置,而非直接修改該腳本。