Демонизация Java-приложения с помощью JSVC

Я пытаюсь демонизировать свое приложение с помощью демона 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

Что мне здесь не хватает? Как я могу сообщить пользовательской статистике, что демон не запущен или уже запущен?


person user987220    schedule 20.01.2013    source источник
comment
этот скрипт представляет собой пакетный файл Windows, да?   -  person Caffeinated    schedule 26.10.2015


Ответы (1)