2010-11-11 79 views
0

jps.exe在JDK 1.5及更高版本中找到的可以監控所有Java進程,但有沒有辦法檢測指定的命令行並終止正確的pid?獲取java進程的名稱而不是pid?

如果用戶有JRE,有沒有類似的代碼可以讓我們輕鬆終止任何進程?

傾向於保持我正在使用的Windows上的主題。

回答

1

jps命令支持許多修改命令輸出的選項。這些選項將來可能會更改或刪除。

-q抑制傳遞給main方法的類名,JAR文件名和參數的輸出,只產生一個本地VM標識符列表。

-m輸出傳遞給main方法的參數。嵌入式JVM的輸出可能爲空。

-l爲應用程序的主類或完整路徑名輸出應用程序的JAR文件的完整軟件包名稱。

-v輸出傳遞給JVM的參數。

-V通過flags文件(.hotspotrc文件或-XX:Flags =參數指定的文件)輸出傳遞給JVM的參數。

jpsgrepsedawkperl或甚至另一Java程序的輸出用於進一步匹配,解析和動作。在Windows上,獲取這些實用程序的最簡單方法是通過Cygwin。

這裏有一些微軟下載命令行實用程序提供用於與流程在Windows的工作是有用的:

+0

我的意思是如果用戶沒有JDK但是JRE,他們會怎麼做呢? – Proyb2 2010-11-11 07:35:50

+0

jps不會帶有JRE。你能給他們發送jps可執行文件嗎?這會起作用嗎?也許jps可執行文件也需要來自JDK的JAR? (我不知道。)或者想出一些替代解決方案。您可以編寫一個自定義的C程序,例如列出並搜索進程。這會很棘手。 – 2010-11-11 07:41:42

0

如果休息用戶沒有jps,您可以使用psps的命令行選項在不同平臺上有所不同,請參閱man ps在您的系統上。我使用ps -java -o pid,time,cmd在CentOS系統上列出java進程。然後終止

+0

窗戶怎麼樣? – Proyb2 2010-11-11 07:34:20

+0

@ user217582 - 我不認爲windows用命令行實用程序來完成殺死進程。在Windows上我通常使用'pslist'和'pskill'。您可以從http://technet.microsoft.com/en-us/sysinternals/bb896683下載它們。aspx&http://technet.microsoft.com/en-us/sysinternals/bb896682.aspx – 2010-11-11 07:46:51