我正试图使用jsvc解除Java应用程序的监控。这是我的初始脚本

#!/bin/sh

# CONFIG
JSVC=/opt/jsvc/jsvc
JAVA_HOME=/usr/lib/jvm/jre-1.6.0-openjdk.x86_64
USER=gserv
ARGS=none
# END CONFIG

PIDFILE=/var/run/silvercar-gameserver.pid
LOGDIR=/var/log/silvercar-gameserver

case "$1" in
        start)
                export JAVA_HOME
                cd `dirname $0`
                $JSVC -jvm server -pidfile $PIDFILE -user $USER -outfile $LOGDIR/stdout -errfile $LOGDIR/stderr \
                         -cp `cat classpath` tr.silvercar.gameserver.runner.DeamonGameServer $ARGS
                ;;
        stop)
                $JSVC -stop -pidfile $PIDFILE
                ;;
esac

exit 0

当我运行./thisscript.sh start作为根目录时,两件事出错了,我怀疑它们是相关的:
应用程序启动,但显示其输出,而不是保存到指定的输出文件
脚本不退出,但阻止,直到我命中Ctrl+C
我做错什么了?

最佳答案

我看不到启动脚本中有任何错误;可能是服务实现中有问题。尝试用一个简单的守护程序骨架实现替换类,看看会发生什么。
另外,请注意DeamonGameServerJsvc does not exit when all non-daemon threads are dead中存在打开的缺陷。

10-06 07:12