1

我想在我的 Debian 服务器上启动 jstatd 作为守护进程(这是我认为它应该自己做的......)但我似乎无法让它工作。

如果我从命令行运行它,它可以正常启动,但会阻止终端会话。然后我可以使用 VisualVM 远程监控进程(是的!)。但是只要我点击 ^c 来控制会话,jstatd 就会终止。

好的,那么让我们通过 init.d 脚本来完成吧!

同样,它工作正常,但我的终端会话仍然被阻止。

我的开始命令是

/usr/bin/jstatd -J-Djava.security.policy=/usr/lib/jvm/jre1.7.0_10/bin/jstatd.all.policy

而且,如上所述,工作正常,因为一旦我执行命令,我就可以看到这些进程。

在 init.d 脚本中,它看起来像:

#!/bin/sh
set -e
NAME=jstatd
PIDFILE=/var/run/$NAME.pid
DAEMON=/usr/bin/jstatd
DAEMON_OPTS="-J-Djava.security.policy=/usr/lib/jvm/jre1.7.0_10/bin/jstatd.all.policy

case "$1" in
   start)
     start-stop-daemon --start --quiet --pidfile $PIDFILE -- exec $DAEMON -- $DAEMON_OPTS
...

任何想法可能导致这种行为?

4

2 回答 2

1

jstatd通过 & 作为后台进程运行。作为普通用户从终端调用以下命令(注意&在末尾):/usr/bin/jstatd -J-Djava.security.policy=/usr/lib/jvm/jre1.7.0_10/bin/jstatd.all.policy &

于 2012-12-28T20:39:08.380 回答
0

也许你已经解决了这个问题,但似乎有一个空间

-- exec 

在“exec”本身之前。也许这是一个复制粘贴问题,但该脚本不应该工作,AFAIK

于 2013-04-04T18:00:45.297 回答