仕事で色々問題があって Tomcat の catalina.sh を初めてちゃんと読んだ。で、その時はわかったことをまとめる時間がなかったので、今になって(一応)メモ。まぁ、たいした内容でもない。
仕事では 6.0.x だったが、折角なので最新版をと Tomcat 7.0.16 の catalina.sh を再度読むことにした(といっても500行強なので、すぐに終わる)。
(1) catalina.sh とは
Tomcat の起動/停止スクリプト。Tomcat のインストールディレクトリの下、bin の配下にいる。
このスクリプトで、Bootstrap#main に start とか stop とかつけて実行する(Javaのプロセスを起動する)。起動時(Bootstrap#main start)に、停止リクエストを受け付けるポートをバインドする(ポートおよびシャットダウン用のパスワードは、server.xml で設定できる)。なので、停止時(Bootstrap#main stop)には、server.xml を読み込んで、停止用のリクエストを投げるだけ。ちなみに、手元で上げ下げする時によく使う startup.sh とか shutdown.sh は、catalina.sh を呼んでいるだけ。
ココで作成したような、/etc/rc.d/init.d 以下に配置する起動/停止スクリプトを作成する場合には、スクリプト中から直接 catalina.sh を呼ぶので、その仕様を知っておく必要がある(と思う)。
(2) 指定できる環境変数
指定できる環境変数は、ヘッダコメントに書いてあるので、まぁそれを見ればよい。ここでは、とてもとても指定したくなる環境変数を3つ紹介する。
1) クラスパス
まんま CLASSPATH。これは追加で指定したいでしょう。でも、catalina.sh 中でクリアされてしまう。なので、このスクリプトの外部からは指定できない。で、catalina.sh から呼ばれるスクリプトに、setclasspath.sh と setenv.sh がある。
setclasspath.sh には、デフォルトで色々書いてあるから、変更したくない(そもそも、既存のファイルに手を入れたくない)。こんな名称のくせに。。
bin の下に setenv.sh を作っておくと読んでくれるので、ここに指定するのがよいのではないかと思う(デフォルトでは setenv.sh は存在しない)。
(3) 指定できる引数
引数は、スクリプトの最後に usage が書いてある(引数の指定を誤って実行すれば、コンソールに出てくる)。ここでは、とてもとても指定したくなる引数を3つ紹介する。
1) catalina.sh run [-security]
スクリプトを実行したコンソールで、そのままプロセスが起動する。PIDファイルなぞガン無視(作成されない)。手元で実行する時など、とにかく起動して、起動時の標準出力をコンソールに垂れ流したい時には、この引数で。で、「Ctrl+C」で落とす♪
2) catalina.sh start [-security]
きちんとバックグラウンドで実行したい時には、この引数で。ちゃんとPIDファイルが作成される。