从另一个java应用程序停止/启动/重新启动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
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
根据具体的实现要求,方法可能会有所改变。我建议的一种方法只是众多方法中的一种。为什么要投反对票?有什么意见吗?