catalina.sh
和 startup.sh
都是 Tomcat 的核心腳本,但它們的角色和使用場景有所不同。以下是它們的主要區別和適用場景:
1. 功能區別
腳本 | 主要用途 | 底層調用關系 |
---|---|---|
startup.sh | 一個快捷入口腳本,用于快速啟動 Tomcat(后臺模式)。 | 實際調用 catalina.sh start |
catalina.sh | 核心控制腳本,支持更豐富的操作(啟動、停止、調試、前臺運行等)。 | 直接操作 Tomcat 的 Bootstrap 類 |
2. 使用場景對比
startup.sh
- 用途:僅用于簡單啟動 Tomcat(默認后臺運行)。
- 特點:
- 適合生產環境或不需要交互的場景。
- 日志默認重定向到
logs/catalina.out
。
- 示例:
./startup.sh # 等同于 ./catalina.sh start
catalina.sh
- 用途:提供完整的生命周期控制,支持更多參數。
- 常用命令:
./catalina.sh run # 前臺運行(日志輸出到控制臺,適合調試) ./catalina.sh stop # 優雅停止 ./catalina.sh debug # 啟用調試模式 ./catalina.sh jpda start # 啟用遠程調試(默認端口 8000)
- 特點:
- 適合開發、調試或需要精細控制的場景。
- 可結合
setenv.sh
自定義環境變量(如JAVA_OPTS
)。
3. 關鍵區別總結
特性 | startup.sh | catalina.sh |
---|---|---|
功能范圍 | 僅啟動(后臺模式) | 啟動、停止、調試、前臺運行等 |
日志輸出 | 后臺運行,日志到文件 | 支持前臺運行(日志到控制臺) |
調試支持 | 不支持 | 支持調試和遠程調試(JPDA) |
適用場景 | 生產環境簡單啟動 | 開發、調試或復雜配置 |
靈活性 | 低 | 高(可自定義參數) |
4. 如何選擇?
- 生產環境:
- 如果只需簡單啟動,用
startup.sh
。 - 如果需要自定義 JVM 參數,建議通過
setenv.sh
配置后,仍用startup.sh
。
- 如果只需簡單啟動,用
- 開發/調試環境:
- 使用
catalina.sh run
前臺運行,實時查看日志。 - 需要調試時用
catalina.sh jpda start
。
- 使用
5. 底層關系
startup.sh
本質上是一個簡化版的包裝腳本,其核心邏輯直接調用catalina.sh
:# startup.sh 的簡化邏輯 exec "$CATALINA_HOME/bin/catalina.sh" start "$@"
- 因此,
catalina.sh
是真正的核心,而startup.sh
只是它的一個快捷方式。
6. 最佳實踐
- 不要直接修改
startup.sh
或catalina.sh
- 自定義配置應通過
setenv.sh
(需手動創建)實現,例如:# setenv.sh export JAVA_OPTS="-Xms512M -Xmx1024M -Dapp.home=/path/to/app"
- 自定義配置應通過
- 多實例部署時
- 使用
CATALINA_BASE
配合catalina.sh
管理多個 Tomcat 實例。
- 使用
總結
- 簡單啟動 →
startup.sh
- 高級控制 →
catalina.sh
- 調試/開發 →
catalina.sh run
或catalina.sh jpda start
理解兩者的區別后,可以更靈活地根據場景選擇合適的腳本!