Я пытаюсь демонизировать свое приложение с помощью демона Apache Commons, используя интерфейс Daemon. 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. Но в моем файле ошибок я нахожу:
Still running according to PID file /tmp/deamon.pid, PID is 1799
Service exit with a return value of 122
То же самое, когда я пытаюсь создать исключение в методе start() и пытаюсь запустить демон, код ответа 0. Но файл ошибки:
Service exit with a return value of 5
Что мне здесь не хватает? Как я могу сообщить пользовательской статистике, что демон не запущен или уже запущен?