![](/img/trans.png)
[英]Start, stop, restart Glassfish Server from java desktop application
[英]stop/start/restart java application from another java application
我在linux(centos)
系統上運行了兩個Java應用程序。第一個應用程序完成了處理,第二個應用程序CONTROLS第一個應用程序。
控制含義(對從第二個應用啟動的第一個應用執行操作):
我的第一個應用程序在靜態端口10001
上運行
如何從第二個應用程序執行這些操作? 我發現這些文章使我更加接近。
https://stackoverflow.com/a/14340719/1169180和https://stackoverflow.com/a/138098/1169180
如何獲取在端口(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提示符ps -ef | grep eSocketServer.jar | awk '{print $2}'
執行相同的命令時,它沒有給我任何輸出 ps -ef | grep eSocketServer.jar | awk '{print $2}'
您可以創建程序的runnable jar
並使用以下命令從控制器啟動它: Runtime.getRuntime().exec("java -jar JAR-PATHNAME");
在您的第一個應用程序中,只需使用以下語句獲取process id
,這將返回PID
。 ManagementFactory.getRuntimeMXBean().getName().substring(0, ManagementFactory.getRuntimeMXBean().getName().indexOf("@")
將此PID
寫入文件,並讓controller
從文件中讀取它。 現在可以在Linux中使用kill
命令來實現STOP
(以與運行java -jar
commmand相同的方式運行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.