我正在运行一个java应用程序,它通过在不同的屏幕 session 中启动其他java应用程序来管理它们。我的问题是,如果这些托管应用程序之一没有响应,我想通过我的管理应用程序终止其 java 进程。
管理应用程序使用screen -dmS appname java -jar path
启动其他应用程序
我尝试的第一件事是让我的管理应用程序运行 screen -S name -X quit
但大多数时候这只会消除屏幕 session ,并且我会陷入无法访问的正在运行的 java 应用程序。
我尝试研究的第二件事是终止 java 进程本身,这将反过来终止屏幕,但我的问题是如何获取 java 应用程序的 PID?
ps -A
没有帮助,因为它没有提供我想要杀死的特定 java 应用程序的任何线索。
我需要 PID 可用于我的管理应用程序或任何其他使我能够终止屏幕内运行的 java 进程的方式。 然而,解决我的问题的最好方法是能够命名 java 应用程序进程。
感谢任何帮助。
最佳答案
当我启动任何托管应用程序时,我通过传递参数解决了这个问题:
screen -dmS helperApp java -jar 路径 helperApp
这使我能够通过执行以下操作来识别所有其他进程的 PID
jps -m | grep helperApp
由于我现在已经识别并获取了 PID,因此我能够终止该进程。
感谢所有提供帮助的人。
关于在屏幕中运行的 Java 应用程序不会因屏幕退出而终止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44837177/