从另一个java应用程序停止/启动/重启java应用程序

时间:2013-09-03 11:49:19

标签: java linux centos pid

我在我的linux(centos) system.first应用程序上运行了两个java应用程序,完成了处理和第二个应用程序 CONTROLS 第一个应用程序。

控制含义(对第二个应用程序启动的第一个应用程序执行操作):

  • START
  • STOP
  • RESTART

我的第一个应用程序在静态端口10001

上运行

如何从我的第二个应用程序执行这些操作?我发现这些文章让我更接近。

https://stackoverflow.com/a/14340719/1169180& https://stackoverflow.com/a/138098/1169180

如何获得在PID端口上运行的(10001)应用程序?

代码: - eSocketServer.jar是我的第一个应用程序jar文件

Process p = Runtime.getRuntime().exec(
                    "ps -ef | grep eSocketServer.jar | awk '{print $2}'");
BufferedReader br = new BufferedReader(new InputStreamReader(
                    p.getInputStream()));
while ((br.readLine()) != null)
System.out.println("line: " + br.readLine());
p.waitFor();
System.out.println("exit: " + p.exitValue());
p.destroy();

当shell提示符ps -ef | grep eSocketServer.jar | awk '{print $2}'

执行相同的命令时,它不会给我任何输出

1 个答案:

答案 0 :(得分:0)

您可以创建程序的runnable jar并使用以下命令从控制器启动它: Runtime.getRuntime().exec("java -jar JAR-PATHNAME");

在您的第一个应用中,只需使用以下语句获取process id,该语句将返回PIDManagementFactory.getRuntimeMXBean().getName().substring(0, ManagementFactory.getRuntimeMXBean().getName().indexOf("@")

将此PID写入文件,并让controller从文件中读取它。 STOP现在可以使用linux中的kill命令实现(以与运行java -jar命令相同的方式运行它。