在我的java程序中,我想殺死名爲「DummyBroker」(這是另一個java程序)的進程。我可以使用TaskKill殺死它,但它需要進程的PID。那麼我如何獲取特定java進程的pid然後殺死它?使用其名稱而不是PID殺死java進程
回答
終於找到一個簡單的解決方案here
JPS - Java虛擬機進程狀態工具,可用於用它的名字殺死一個java進程。
for /f "tokens=1" %i in ('C:\java\jdk-7u45-windows-x64\bin\jps -m ^| find "DummyBroker"') do (taskkill /F /PID %i)
我們可以在批處理文件中添加上面的內容,只需從java程序調用批處理文件即可。
Runtime.getRuntime()。exec(「taskkill/F/IM」+ TASKNAME); 雖然這只是TASKNAME
殺死你應該看看這個鏈接:Killing a process using Java
而且使用這樣的:
Runtime.getRuntime().exec("taskkill /F /IM <processname>.<extension>")
否則,你也許可以使用tasklist
和split
一個combinaison找到包含的行,然後找到PID
。
這隻能通過taskname來終止。所有的java程序都有java.exe作爲taskname –
java進程會被命名爲「java.exe」,上面的命令會殺死所有java進程而不是特定的java應用程序(在我的例子中是'com.xxx.java.broker。 DummyBroker') – zer0Id0l
我現在不能嘗試它,因爲我在Mac上,但如果沒有人給你答案,我會在今晚嘗試給你一個更具體的方法來做到這一點;) –
通過這個鏈接... http://www.golesny.de/p/code/javagetpid
使用java.lang.management.ManagementFactory
這樣
RuntimeMXBean rtb = ManagementFactory.getRuntimeMXBean();
String processName = rtb.getName();
int result = 0;
Pattern pattern = Pattern.compile("^([0-9]+)@.+$", Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(processName);
if (matcher.matches()) {
result = new Integer(Integer.parseInt(matcher.group(1)));
}
- 1. 按名稱殺死進程?
- 2. 殺死bash id而不是PID
- 3. 殺死進程殺死其他進程
- 4. 而不殺死Python進程
- 5. 用windows機器殺死進程名稱
- 6. 用名稱殺死隨機進程
- 7. 獲取java進程的名稱而不是pid?
- 8. 通過PID在Erlang中殺死進程
- 9. 殺死進程和PID回收
- 10. 用vbscript殺死Java進程
- 11. Ubuntu:如何殺死一個改變其PID的進程?
- 12. PHP獲得進程的PID並將其殺死
- 13. 殺死不會殺死進程
- 14. 在C中殺死一個pthread而不殺死整個進程
- 15. 如何殺死一個PID在PID文件中的進程?
- 16. Java殺死Popup進程
- 17. 殺死java殭屍進程
- 18. 殺死nodejs進程而不重啓
- 19. 如何殺死java中的名稱服務器進程
- 20. 在python中使用pid來殺死子進程
- 21. 我使用PID創建一個殺死進程
- 22. 如何殺死一個進程使用VB.NET特定PID`
- 23. 如何使用pid從php中殺死一個linux進程?
- 24. 使用Unix中最低的PID來殺死進程
- 25. 如何使用tskill殺死一個長名稱的進程?
- 26. 如何從pid文件中查殺時殺死子進程
- 27. 殺死一個Word.Basic應用程序,而不會殺死Word.Application主進程
- 28. 獲取殺死我的應用程序的進程的PID
- 29. 殺死進程
- 30. 殺死進程
'tasklist'將打印格式化的所有進程。您可以使用此輸出來搜索正確的進程並獲取其PID。請注意,這隻適用於Windows,但我想你知道。 – Veluria
相關:http://stackoverflow.com/questions/35842/how-can-a-java-program-get-its-own-process-id –
作爲一個短期的解決方法,我創建了一個靜態的'Process'。使用'runtime.exec'啓動java應用程序並使用'p.destroy'終止進程。 – zer0Id0l