Prunsrv exe通过任务管理器被杀死但子进程仍然是

时间:2017-12-26 10:09:42

标签: java spring windows batch-file procrun

我使用procrun(特别是prunsrv)将Java应用程序作为Windows服务运行。该服务被定义为exe StartMode,因此批处理文件(run-my-app.bat)作为StartImage运行。为什么我不使用jvm或java模式是一个不同的故事,与此问题无关(我无法使用procrun运行spring boot应用程序,所有示例都不起作用所以我使用创建批处理文件并调用java -jar my 。罐)。 prunsrv.exe实际上是根据应用程序重命名的,例如myapp.exe。问题是如果通过任务管理器杀死了myapp.exe,那么java进程仍然存在!批处理文件run-my-app.bat使用以下行运行应用程序:

start "%APP_NAME%" /b "%JAVA_EXE%" -jar myapp.jar --spring.config.location=application.properties --logging.config=log4j2.xml

批处理文件完成,启动的Java进程仍然存在 - 我知道这一点,因为如果我在上面的"开始"之后打印一条消息命令我在日志中看到了消息。

当prunsrv.exe(重命名为myapp.exe)被杀死时,有没有办法停止java进程?

1 个答案:

答案 0 :(得分:0)

子进程只有在创建为Job objects时才会关闭。

恕我直言,它无法告诉prunsrv.exe将流程作为工作启动,因此您的问题的答案是

您当然可以单独终止每个流程。有are attempts来杀死进程树,但要注意Windows不维护父子关系。这意味着:如果在3个进程的链中,中间的进程死亡,则该树不再可用。