catalina.shを実行してもなかなか終了してくれない場合があって、再起動するときに
catalina.sh stop catalina.sh start
とスクリプトで実行すると失敗することがある。
で、ubuntuの起動スクリプトとかだと以下のようになっている。
log_daemon_msg "Stopping $DESC" "$NAME" set +e if [ -f "$CATALINA_PID" ]; then start-stop-daemon --stop --pidfile "$CATALINA_PID" \ --user "$TOMCAT6_USER" \ --retry=TERM/20/KILL/5 >/dev/null if [ $? -eq 1 ]; then log_progress_msg "$DESC is not running but pid file exists, cleaning up" elif [ $? -eq 3 ]; then PID="`cat $CATALINA_PID`" log_failure_msg "Failed to stop $NAME (pid $PID)" exit 1 fi rm -f "$CATALINA_PID" rm -rf "$JVM_TMP" else log_progress_msg "(not running)" fi log_end_msg 0 set -e
start-stop-daemonの--retry=TERM/20/KILL/5の部分はTERM送って20秒待ってKILL送って5秒待つという意味。
start-stop-daemonがないけど自力で書きたくない場合は、一応catalina.shの中でも似たようなことをやっているのでそっちでも少し代用可能。
$ catalina.sh 20 -force
とやるとTomcatに終了処理を命じた後に、20秒待って、それでも終了していなければ、強制的に終了するということになる。