java - JSVC 初始化脚本不退出

标签 java linux shell daemon jsvc

我正在尝试使用 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

当我以 root 身份运行 ./thisscript.sh start 时,有两件事出错了,我怀疑它们是相关的:

  • 应用程序启动,但显示其输出而不是保存到指定的输出文件
  • 脚本不会退出,但会阻塞,直到我按下 Ctrl+C

我做错了什么?

最佳答案

我没有发现您的启动脚本有任何问题;也许您的服务实现 DeamonGameServer 存在问题。尝试用一个简单的守护进程骨架实现替换您的类,看看会发生什么。

另外,请注意 jsrv 中存在一个开放缺陷:Jsvc does not exit when all non-daemon threads are dead .

关于java - JSVC 初始化脚本不退出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4500761/

相关文章:

java - 有什么方法可以使用 Eclipse 在 Java 字符串文字中编写(复制粘贴)格式良好的 SQL 查询?

java - SSL CA证书安装

linux - `which git` 好像在撒谎?

c - argv : Sanitizing wildcards

c++ - 使用 QProcess 读取标准输出

java - while循环停止条件缺失

java - JFileChooser 和 ActionEvent 处理程序的放置位置

python - 如何通过 ssh 命令行转义远程命令的引号

c++ - 增加 eclipse CDT 中的堆栈大小?

shell - 在 ZSH 中使用陷阱退出 shell 脚本的正确方法?