我正在尝试使用守护程序界面使用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
我在这里失踪了什么?如何通知用户统计信息deamon没有启动或者它已经在运行?
答案 0 :(得分:5)
仔细阅读JSVC的工作原理后:http://commons.apache.org/daemon/jsvc.html
我发现我做错了什么,我必须使用等待参数
当使用-wait参数时,启动程序进程将等待,直到控制器显示“我准备好”,否则在创建控制器进程后返回。