2010-11-11 50 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