デーモンインターフェイスを使用して、ApacheCommonsDaemonを使用してアプリケーションをデーモン化しようとしています。Javaアプリケーション自体は、スタウトに書き込むだけでは何もしていません。
jsvcをコンパイルしました:http://people.apache.org/~mturk/daemon-1.0.10/
(最新バージョンも試してみました:http://people.apache.org/~mturk/daemon-1.0.12/)
そして、この基本的なスクリプトを書きました。
do_exec()
{
$EXEC \
-home "$JAVA_HOME" \
-cp $CLASS_PATH \
-outfile $LOG_OUT \
-errfile $LOG_ERR \
-pidfile $PID \
$1 \
$MAIN_CLASS
echo "result: $?"
}
case "$1" in
start)
do_exec
;;
stop)
do_exec "-stop"
;;
restart)
do_exec "-stop"
do_exec
;;
*)
echo "usage: daemon {start|stop|restart}" >&2
exit 3
;;
esac
デーモンが実行されていないときにデーモンを停止しようとすると、応答コード255が返されます。これは素晴らしいことです。
しかし、デーモンがすでに実行されているときにデーモンを起動しようとすると、応答コード0が返されます。しかし、errfileで次のことがわかります。
Still running according to PID file /tmp/deamon.pid, PID is 1799
Service exit with a return value of 122
start()メソッドで例外をスローしてデーモンを起動しようとした場合も同じです。応答コードは0です。しかしerrfile:
Service exit with a return value of 5
私がここで欠けているものは何ですか?デーモンが起動しなかった、またはデーモンがすでに実行されていることをユーザー統計に通知するにはどうすればよいですか?