3.

tomcat の起動 / 停止 (Linux / Mac) コマンド

編集
この記事の要点
  • Linux / Mac での Tomcat 起動・停止コマンド
  • 起動: $CATALINA_HOME/bin/startup.sh または catalina.sh start
  • 停止: $CATALINA_HOME/bin/shutdown.sh または catalina.sh stop
  • フォアグラウンド: catalina.sh run(ログをそのまま端末に出す、Ctrl+C で停止)
  • systemd 管理: sudo systemctl start/stop/restart tomcat

 

事前準備

環境変数の設定

# 必須の環境変数
export JAVA_HOME=/usr/lib/jvm/java-17        # Linux
export JAVA_HOME=/Library/Java/JavaVirtualMachines/temurin-17.jdk/Contents/Home  # Mac

export CATALINA_HOME=/opt/tomcat
export PATH=$CATALINA_HOME/bin:$PATH

# .bashrc / .zshrc に追加して永続化
echo "export JAVA_HOME=/usr/lib/jvm/java-17" >> ~/.bashrc
echo "export CATALINA_HOME=/opt/tomcat" >> ~/.bashrc
echo "export PATH=\$CATALINA_HOME/bin:\$PATH" >> ~/.bashrc
source ~/.bashrc

起動

① startup.sh(バックグラウンド)

$ $CATALINA_HOME/bin/startup.sh

Using CATALINA_BASE:   /opt/tomcat
Using CATALINA_HOME:   /opt/tomcat
Using CATALINA_TMPDIR: /opt/tomcat/temp
Using JRE_HOME:        /usr/lib/jvm/java-17
Using CLASSPATH:       /opt/tomcat/bin/bootstrap.jar:/opt/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:
Tomcat started.

# 起動確認
$ curl -I http://localhost:8080/
HTTP/1.1 200

# プロセス確認
$ ps aux | grep tomcat

② catalina.sh run(フォアグラウンド)

ログがそのまま端末に表示され、Ctrl+C で停止できる。開発・デバッグ時に便利:

$ $CATALINA_HOME/bin/catalina.sh run
01-May-2026 12:00:00.123 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version name:   Apache Tomcat/9.0.71
...
01-May-2026 12:00:02.456 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in [1234] milliseconds
^C   # Ctrl+C で停止

③ catalina.sh start(バックグラウンド)

$ $CATALINA_HOME/bin/catalina.sh start
# startup.sh と機能同等

停止

① shutdown.sh

$ $CATALINA_HOME/bin/shutdown.sh

Using CATALINA_BASE:   /opt/tomcat
Using CATALINA_HOME:   /opt/tomcat
...

# 停止確認
$ ps aux | grep tomcat  # → プロセスが消えていれば停止完了

② catalina.sh stop

$ $CATALINA_HOME/bin/catalina.sh stop

# 強制停止オプション (シャットダウンしない場合)
$ $CATALINA_HOME/bin/catalina.sh stop 30 -force
# 30 秒待っても停止しなければ SIGKILL

再起動

# シェルスクリプトでまとめて
$ $CATALINA_HOME/bin/shutdown.sh
$ sleep 5
$ $CATALINA_HOME/bin/startup.sh

# またはワンライナー
$ $CATALINA_HOME/bin/shutdown.sh && sleep 5 && $CATALINA_HOME/bin/startup.sh

JVM オプションのカスタマイズ

bin/setenv.sh(標準で存在しない、自分で作る)で起動オプションを設定:

#!/bin/sh
# bin/setenv.sh
export CATALINA_OPTS="-server \
    -Xms1g -Xmx4g \
    -XX:MetaspaceSize=128m \
    -XX:MaxMetaspaceSize=512m \
    -XX:+UseG1GC \
    -XX:+HeapDumpOnOutOfMemoryError \
    -XX:HeapDumpPath=/var/log/tomcat-heapdump.hprof \
    -Djava.net.preferIPv4Stack=true \
    -Dfile.encoding=UTF-8 \
    -Duser.timezone=Asia/Tokyo"

# 実行権限
$ chmod +x bin/setenv.sh

# 確認
$ $CATALINA_HOME/bin/startup.sh
Using CATALINA_OPTS:   -server -Xms1g -Xmx4g ...

systemd サービスとして管理

本番運用なら systemd で管理するのが標準:

# /etc/systemd/system/tomcat.service
[Unit]
Description=Apache Tomcat Web Application Container
After=network.target

[Service]
Type=forking
Environment="JAVA_HOME=/usr/lib/jvm/java-17"
Environment="CATALINA_PID=/opt/tomcat/tomcat.pid"
Environment="CATALINA_HOME=/opt/tomcat"
Environment="CATALINA_BASE=/opt/tomcat"
Environment="CATALINA_OPTS=-Xms1g -Xmx2g -server -XX:+UseG1GC"

ExecStart=/opt/tomcat/bin/startup.sh
ExecStop=/opt/tomcat/bin/shutdown.sh

User=tomcat
Group=tomcat
RestartSec=10
Restart=on-failure

[Install]
WantedBy=multi-user.target
# 有効化と起動
$ sudo systemctl daemon-reload
$ sudo systemctl enable tomcat
$ sudo systemctl start tomcat

# 状態確認
$ sudo systemctl status tomcat
● tomcat.service - Apache Tomcat
   Loaded: loaded (/etc/systemd/system/tomcat.service; enabled)
   Active: active (running) since ...
 Main PID: 1234 (java)

# ログ
$ sudo journalctl -u tomcat -f

# 操作
$ sudo systemctl stop tomcat
$ sudo systemctl restart tomcat
$ sudo systemctl reload tomcat   # 設定だけリロード (可能な場合)

Mac の Homebrew

# Homebrew でインストールした場合
$ brew install tomcat@9

# 起動 (フォアグラウンド)
$ catalina run

# 起動 (バックグラウンド / Homebrew services)
$ brew services start tomcat@9
$ brew services stop tomcat@9
$ brew services restart tomcat@9

# サービス一覧
$ brew services list

起動しない場合

  1. 環境変数: JAVA_HOME / CATALINA_HOME 確認
  2. ポート競合: 8080 を他プロセスが使用していないか $ ss -tnlp | grep 8080
  3. ログ: $CATALINA_HOME/logs/catalina.out / catalina.YYYY-MM-DD.log
  4. 権限: tomcat ユーザがログ・work ディレクトリに書き込めるか
  5. conf/server.xml: 構文エラー → catalina.sh configtest で検証
  6. conf/context.xml の DB 接続: DataSource 取得失敗
  7. webapps の壊れた WAR: 展開失敗で起動が止まる

停止しない場合

# 通常停止が効かない時
$ $CATALINA_HOME/bin/shutdown.sh 30 -force
# 30 秒待ってから kill -9

# それでも残るなら手動 kill
$ pgrep -f "catalina.startup.Bootstrap"
1234
$ kill 1234              # SIGTERM
$ sleep 5
$ kill -9 1234           # SIGKILL (最終手段)

# Tomcat の PID ファイル
$ cat /opt/tomcat/tomcat.pid 2>/dev/null
1234

# Java プロセス全部を kill (危険)
$ pkill -f catalina

関連記事

編集
Post Share
子ページ

子ページはありません

同階層のページ
  1. tomcatインストール(CentOS)
  2. WARファイルのAutoDeploy設定
  3. tomcatの起動/停止(Linux, Mac)
  4. JRE(JVM)のJavaのバージョン確認方法
  5. エラー一覧
  6. CATALINA_HOMEの確認方法(Linux, Mac)
  7. 管理画面の開き方
  8. tomcatの起動確認方法
  9. tomcatの起動/停止ログとcatalina.log/catalina.outの違い
  10. CentOSにおけるポート開放方法
  11. Javaのバージョン変更方法(Mac編)