将诊断命令请求发送到正在运行的 Java 虚拟机 (JVM)。
概要
jcmd [-l|-h|-help]
jcmd pid|main-class PerfCounter.print
jcmd pid|main-class -f filename
jcmd pid|main-class command[ arguments]
描述
该jcmd实用程序用于向 JVM 发送诊断命令请求。它必须在运行 JVM 的同一台机器上使用,并且具有用于启动 JVM 的相同有效用户和组标识符。
- Note:
要从远程机器或使用不同的标识符调用诊断命令,您可以使用该com.sun.management.DiagnosticCommandMBean接口。有关该DiagnosticCommandMBean接口的更多信息,请参阅 API 文档,网址为http://docs.oracle.com/javase/8/docs/jre/api/management/extension/com/sun/management/DiagnosticCommandMBean.html
如果您jcmd不带参数或使用-l选项运行,它会打印正在运行的 Java 进程标识符列表以及用于启动进程的主类和命令行参数。jcmd使用-h或者-help打印该工具的帮助消息。
- Note
该jcmd实用程序可用于与已经运行的 JVM 中的 Java Flight Recorder (JFR) 动态交互。您可以使用它来解锁商业功能,启用/启动/停止飞行记录,以及从系统获取各种状态消息。有关示例列表,请参阅 Java Flight Recorder 运行时指南,网址为http://docs.oracle.com/javacomponents/jmc.htm
如果您指定进程标识符 ( pid ) 或主类 ( main-class ) 作为第一个参数,jcmd则将诊断命令请求发送到具有指定标识符的 Java 进程或具有指定主类名称的所有 Java 进程。您还可以通过指定0进程标识符将诊断命令请求发送到所有可用的 Java 进程。使用以下之一作为诊断命令请求:
Perfcounter.print
打印可用于指定 Java 进程的性能计数器。性能计数器列表可能因 Java 进程而异。
-f filename
从中读取诊断命令并将其发送到指定 Java 进程的文件的名称。仅与-f选项一起使用。文件中的每个命令都必须写在一行上。以数字符号 ( ) 开头的行将#被忽略。当读取所有行或读取包含stop关键字的行时,文件的处理结束。
command [arguments]
要发送到指定 Java 进程的命令。可以通过向该进程发送命令来获得给定进程的可用诊断命令列表help。每个诊断命令都有自己的一组参数。要查看命令的描述、语法和可用参数列表,请使用命令的名称作为命令的参数help。
- Note:如果任何参数包含空格,则必须用单引号或双引号 ('或") 将它们括起来。此外,您必须使用反斜杠 ( ) 对单引号或双引号进行转义,以防止操作系统 shell 处理引号。或者,您可以将这些参数用单引号括起来,然后用双引号括起来(或用双引号括起来,然后用单引号括起来)。
Options
选项是互斥的。
-f filename
从指定文件读取命令。仅当您将进程标识符或主类指定为第一个参数时,才能使用此选项。文件中的每个命令都必须写在一行上。以数字符号 ( ) 开头的行将#被忽略。当读取所有行或读取包含stop关键字的行时,文件的处理结束。
-h
-help
打印帮助消息。
-l
打印带有主类和命令行参数的正在运行的 Java 进程标识符列表。
See Also
jps(1)