是否有可能在一个jvm中的java进程杀死/停止另一个jvm中的另一个java进程?

时间:2012-02-13 06:51:57

标签: java process jvm ipc

如果是这样,我如何找出它(在系统中的所有其他进程中)以及如何杀死它以使其shutdownhook被执行?

我想这样做的原因是因为我想实现像apache start,apache stop之类的东西,在调用apache start或apache stop之后,服务器进程在后台启动或停止,然后我得到命令或bash提示符;这假设适用于linux和windows。

3 个答案:

答案 0 :(得分:4)

这是可能的,但它将是特定于操作系统的。 JVM中没有任何内容可以自动为您提供杀死其他虚拟机的权限。

您需要调用操作系统的kill命令(或等效命令)或编写一些本机代码。

可以这样做,如果你只打算在类似unix的系统上运行,那么你最好的选择就是编写一个可以做你想做的shell脚本,然后用ProcessBuilder执行它。和朋友们。

答案 1 :(得分:2)

你可以考虑在服务方面打开一个服务,这个服务是关闭的,由主应用程序处理。

另一方面,如果你不想这样做,你需要找到一种方法来获取jvm实例的进程。如果你只想杀死jvm,那么对于一个特定的过程来说这很容易。你需要一些帮助,比如:

link

希望它适用于你

答案 2 :(得分:0)

我认为你可以使用JMX。

您可以在java进程中启动JMX服务器,并打开一些启动和停止等API。

使用JMX,您无需实现有关套接字和权限的任何内容。您只需要使用JMX提供远程调用的函数。您还可以设置用户和密码以进行访问。