gpt4 book ai didi

java - JSVC 作为守护进程启动 - 启用 JMX?

转载 作者:行者123 更新时间:2023-12-02 07:31:02 26 4
gpt4 key购买 nike

我正在使用 JSVC 将我的 java 程序作为守护进程启动,该守护进程应该 24/7 运行。

但是,我曾经启用 JMX 来监视我的应用程序,直到我决定将其转换为守护程序。

我的init.d脚本是这样的

#!/bin/sh

# Setup variables
EXEC=/usr/bin/jsvc
JAVA_HOME=/usr/lib/jvm/java-6-openjdk
CLASS_PATH="/usr/share/java/commons-daemon.jar":"/fullpath/Myserver.jar"
CLASS=myserver.Main
USER=myserver
PID=/var/run/myserver.pid
LOG_OUT=/var/log/myserver/client.out
LOG_ERR=/var/log/myserver/client.err


do_exec()
{
$EXEC -home "$JAVA_HOME" -cp $CLASS_PATH -user $USER -outfile $LOG_OUT -errfile $LOG_ERR -pidfile $PID $1 $CLASS -Xmx30M -Djava.rmi.server.hostname=123.234.12.34 -Dcom.sun.management.jmxremote.authenticate=true -Dcom.sun.management.jmxremote.password.file=/fullpath/jmxremote.password -Dcom.sun.management.jmxremote.access.file=/fullpath/jmxremote.access -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=1234
}

case "$1" in
start)
do_exec
;;
stop)
do_exec "-stop"
;;
restart)
if [ -f "$PID" ]; then
do_exec "-stop"
do_exec
else
echo "service not running, will do nothing"
exit 1
fi
;;
*)
echo "usage: daemon {start|stop|restart}" >&2
exit 3
;;
esac

-D 选项似乎没有生效,因为 JMX 不使用端口 1234(或我指定的任何其他端口)。

应用程序运行得很好,但 JMX 不行。我不知道从哪里开始搜索,你有想法吗?

最佳答案

我需要更换:

$EXEC -home "$JAVA_HOME"  -cp $CLASS_PATH -user $USER -outfile $LOG_OUT -errfile $LOG_ERR -pidfile $PID $1 $CLASS -Xmx30M -Djava.rmi.server.hostname=123.234.12.34 -Dcom.sun.management.jmxremote.authenticate=true -Dcom.sun.management.jmxremote.password.file=/fullpath/jmxremote.password -Dcom.sun.management.jmxremote.access.file=/fullpath/jmxremote.access -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=1234

与:

$EXEC -home "$JAVA_HOME"  -cp $CLASS_PATH -user $USER -outfile $LOG_OUT -errfile $LOG_ERR -pidfile $PID -Xmx30M -Djava.rmi.server.hostname=123.234.12.34 -Dcom.sun.management.jmxremote.authenticate=true -Dcom.sun.management.jmxremote.password.file=/fullpath/jmxremote.password -Dcom.sun.management.jmxremote.access.file=/fullpath/jmxremote.access -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=1234 $1 $CLASS 

所以,不要将附加参数放在 $CLASS 之后

关于java - JSVC 作为守护进程启动 - 启用 JMX?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12912211/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com