停止守护进程不会终止子进程

时间:2014-11-28 10:56:20

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

按照设置

START-STOP-守护程序:

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 aux | grep myapp给了我2个输出,一个用于守护进程,一个用于java,作为子级。如果我确实想要停止它,只有守护进程被停止,java进程将继续从控制台分离运行。

当我停止守护进程时,如何更改守护进程/脚本以将术语定义为java应用程序?

1 个答案:

答案 0 :(得分:1)

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

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