「jcmd」

jcmd,用于向正在运行的JVM实例发送诊断命令请求。

命令行语法格式(SYNOPSIS)

jcmd [-l|-h|-help]
jcmd pid|main-class PerfCounter.print
jcmd pid|main-class -f filename
jcmd pid|main-class command[ arguments]

命令简述(DESCRIPTION)

jcmd用于向JVM发送诊断命令请求。必须在运行JVM实例的主机上使用,并且具有用于启动JVM实例的相同的有效用户和组标识符。

Note:
要从「远程机器」或「不同的标识符」调用诊断命令,可以使用com.sun.management.DiagnosticCommandMBean接口。
参见:http://docs.oracle.com/javase/8/docs/jre/api/management/extension/com/sun/management/DiagnosticCommandMBean.html

如果没有指定参数或-l选项,默认,jcmd将列出Java进程标识符、主类、命令行参数。用-h或-help选项运行jcmd会打印工具的帮助消息。

如果将进程标识符(pid)或主类(main-class)指定为第一个参数,则jcmd将诊断命令请求发送到指定的Java进程。
如果指定的进程标识符为0,则将诊断命令请求发送到所有的Java进程。使用以下之一作为诊断命令请求:

Perfcounter.print
打印可用于指定Java进程的性能计数器。性能计数器的列表可能因Java进程而异。

-f filename
从filename中读取诊断命令,并将其发送到指定的Java进程。
文件中的每个命令必须写在单行上。以数字符号(#)开头的行将被忽略。
当读取了所有行或读取到了stop关键字时,文件的处理结束。

command [arguments]
要发送到指定Java进程的命令。可以通过向进程发送help命令来查看可用诊断命令的列表。
每个诊断命令都有自己的一组参数。要查看命令的描述、语法、可用参数列表,可以使用命令的名称作为help命令的参数。

注意:
如果任何参数包含空格,则必须用单引号或双引号括起来。
如果包含单引号或双引号,也需要转义。

命令支持的选项及含义(OPTIONS)

这些选项是相互排斥的。

-f filename
从指定的文件中读取命令。
只有第一个参数为「进程标识符」或「主类」时,才能使用此选项。
文件中的每个命令必须写在单独的一行上。以数字符号(#)开头的行将被忽略。
当读取了所有行或者遇到stop关键字时,文件的处理结束。

-h
-help
显示帮助信息。

-l
列出Java进程标识符、主类、命令行参数。

相关手册(SEE ALSO)

jps(1)

参考文献