【问题标题】:Stop Daemon not terminating child java process停止守护进程不终止子 java 进程
【发布时间】:2015-01-27 00:37:16
【问题描述】:

以下设置

启动-停止-守护进程:

do_start
start-stop-daemon -S -m -p $PIDFILE --name myapp --exec /opt/myapp

do_stop
start-stop-daemon -K -R TERM/30/KILL/5 -p $PIDFILE --name myapp

我开始的脚本是这样的:

 java -jar ./myapp.jar

所以当我启动我的守护进程时一切正常,PIDFILE 被生成。 ps辅助| grep myapp 给了我 2 个输出,一个用于守护进程,一个用于 java,作为孩子。如果我确实想停止它,只有守护进程停止,java 进程继续运行,与控制台分离。

当我停止守护程序时,我需要如何更改我的守护程序/脚本来定义 java 应用程序?

【问题讨论】:

    标签: java bash debian sh start-stop-daemon


    【解决方案1】:

    这不起作用的原因是你真的只是停止/opt/myapp,当它被杀死时不会自动杀死它的孩子(java进程)。要么在您的脚本中手动执行此操作(这很棘手),要么让 start-stop-daemon 直接启动 java。它应该看起来像这样

    start-stop-daemon -S -m -p $PIDFILE --name myapp --exec java -- -jar ./myapp.jar
    

    【讨论】: