Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从另一个java应用程序停止/启动/重新启动java应用程序_Java_Linux_Centos_Pid - Fatal编程技术网

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

从另一个java应用程序停止/启动/重新启动java应用程序,java,linux,centos,pid,Java,Linux,Centos,Pid,我有两个java应用程序在我的linux(centos)系统上运行。第一个应用程序完成处理,第二个应用程序控制第一个应用程序 控制含义(对从第二个应用程序启动的第一个应用程序执行操作): 开始 停止 重新启动 我的第一个应用程序运行在静态端口10001 如何从第二个应用程序执行这些操作?我发现这篇文章让我更亲近了 & 如何获取在端口(10001)上运行的应用程序的PID 代码:-eSocketServer.jar是我的第一个应用程序jar文件 Process p = Runtime.getR

我有两个java应用程序在我的
linux(centos)
系统上运行。第一个应用程序完成处理,第二个应用程序控制第一个应用程序

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

  • 开始
  • 停止
  • 重新启动
我的第一个应用程序运行在静态端口
10001

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

&

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

代码:-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提示符执行相同的命令时,它不会给我任何输出。你可以创建程序的
可运行jar
,并使用以下命令从控制器启动它:
Runtime.getRuntime().exec(“java-jar-jar-PATHNAME”)

在您的第一个应用程序中,只需使用以下语句获取
进程id
,该语句将返回
PID
<代码>ManagementFactory.getRuntimeMXBean().getName().substring(0, ManagementFactory.getRuntimeMXBean().getName().indexOf(“@”)


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

这同样适用于
启动和重新启动吗?
我可以以更合法的方式停止我的第一个应用程序吗?即
系统。退出(0)
而不是
kill
根据具体的实现要求,方法可能会有所改变。我建议的一种方法只是众多方法中的一种。为什么要投反对票?有什么意见吗?