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)
参考文献
- http://docs.oracle.com/javase/8/docs/technotes/tools/unix/jcmd.html#CIHEEDIB
- man 1 jcmd, version OpenJDK Runtime Environment (build 1.8.0_121-8u121-b13-4-b13)