我在我的linux(centos)
system.first应用程序上运行了两个java应用程序,完成了处理和第二个应用程序 CONTROLS 第一个应用程序。
控制含义(对第二个应用程序启动的第一个应用程序执行操作):
我的第一个应用程序在静态端口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}'
答案 0 :(得分:0)
您可以创建程序的runnable jar
并使用以下命令从控制器启动它:
Runtime.getRuntime().exec("java -jar JAR-PATHNAME");
在您的第一个应用中,只需使用以下语句获取process id
,该语句将返回PID
。 ManagementFactory.getRuntimeMXBean().getName().substring(0,
ManagementFactory.getRuntimeMXBean().getName().indexOf("@")
将此PID
写入文件,并让controller
从文件中读取它。 STOP
现在可以使用linux中的kill
命令实现(以与运行java -jar
命令相同的方式运行它。