如果没有指定 hostid, 他将搜索本机上已检测的 JVM。
如果指定了 hostid,将通过指定的端口号和协议在指定的主机上搜索JVM,此时目标主机必须运行了 jstatd。
jps 命令为在目标机器上检测到的每一个JVM,报告 JVM 标识符 或者 lvmid。lvmid 不一定是系统的进程标识符号。
如果没有 options,jps 列出每个java应用的 lvmid,后面跟着简短的应用的class名或者jar文件名;简短格式省略了class的包信息或者jar文件的路径信息;
jsp 命令使用 Java launcher 来查找类名和传递给main方法的参数;如果是自定义的launcher,类名或者jar文件名及给main方法的参数不可用,这种情况下jps输出未知;
Options
-q 只显示 本地 JVM 标识符。
-V 只显示 本地 JVM 标识符,后面跟着应用程序的类名或jar文件名缩写,这是个默认参数。
hostid的格式:[protocol:][[//]hostname][:port][/servername]
protocol:如果没有protocol和hostname,那么是本地协议。如果省略了协议,并指定了hostname,则默认协议rmi协议。
hostname:hostname或IP地址。如果未指定默认localhost;
port: 对于默认的rmi协议,该port参数表示远程主机上rmiregistry中的端口号。如果port省略参数,并且protocol参数指示rmi,则使用默认rmiregistry的端口(1099)。
servername:这个参数的处理取决于实现。对于优化的本地协议,在可以忽略。对于 rmi,这个参数是这个参数是代表远程主机上的RMI远程对象的名称的字符串。(查看jstatd -n 选项获得更多的信息)
jps,列出目标系统上检测到的JVM实例。属于实验性质的命令。
命令行语法格式(SYNOPSIS)
jps [ options ] [ hostid ]
options
命令行选项,查看Options部分。
hostid
获取hostid指定的主机上的进程报告。hostid包含了一些可选组件,通信协议、端口号、其他实现特定数据。
参阅Host Identifier部分。
命令简述(DESCRIPTION)
jps命令列出在目标系统上的Java HotSpot VM实例。该命令仅报告其具有访问权限的JVM的信息。
如果在不指定hostid的情况下,运行jps命令,那么将在本地主机上搜索JVM实例。
如果指定hostid,则在指定的主机上搜索JVM。当然,使用hostid的前提是 jstatd 运行在目标主机上。
对于在目标系统上找到的每个JVM实例,jps命令报告本地JVM标识符或lvmid。lvmid通常是、但不一定是操作系统的JVM进程的进程标识符。
在没有选项的情况下,jps列出了每个Java应用程序的lvmid,后面是应用程序的类名或jar文件名的简写形式。类名或JAR文件名的简写形式省略了类的包信息或JAR文件路径信息。
jps命令使用Java Launcher来查找传递给main方法的类名和参数。如果使用自定义Java Launcher启动目标JVM,那么类或JAR文件名和主方法的参数是不可用的。在这种情况下,jps命令将为类名或JAR文件名输出字符串Unknown,并为main方法输出参数。
由jps命令列出的JVM实例操作系统的权限机制控制。
命令支持的选项及含义(OPTIONS)
jps命令支持许多修改命令输出的选项。这些选项将来会更改或删除。
-q
仅输出本地JVM进程标识符。不输出类名、JAR文件名、传递给main方法的参数。
-V
抑制类名的输出,JAR文件名和传递给main方法的参数,仅生成本地JVM标识符的列表,及主类名或者JAR文件名。
-m
显示传递给main方法的参数。对于嵌入式JVM输出可能为空。
-l
显示应用主类的完整包名;或者应用JAR文件的全路径。
-v
显示传递给JVM的参数。
-Joption
将option传递给JVM。参考 java(1)
主机标识符(HOST IDENTIFIER)
主机标识符或hostid是描述目标系统的字符串。hostid的格式为:
protocol
The communications protocol. If the protocol is omitted and a hostname is not specified, then the
default protocol is a platform-specific, optimized, local protocol. If the protocol is omitted and a
host name is specified, then the default protocol is rmi.
hostname
A hostname or IP address that indicates the target host. If you omit the hostname parameter, then the
target host is the local host.
port
The default port for communicating with the remote server. If the hostname parameter is omitted or the
protocol parameter specifies an optimized, local protocol, then the port parameter is ignored.
Otherwise, treatment of the port parameter is implementation specific. For the default rmi protocol,
the port parameter indicates the port number for the rmiregistry on the remote host. If the port
parameter is omitted, and the protocol parameter indicates rmi, then the default rmiregistry port
(1099) is used.
servername
The treatment of this parameter depends on the implementation. For the optimized, local protocol, this
field is ignored. For the rmi protocol, this parameter is a string that represents the name of the RMI
remote object on the remote host. See the jstatd command -noption for more information.
输出格式(OUTPUT FORMAT)
jps命令的输出格式如下:
lvmid [ [ classname | JARfilename | “Unknown”] [ arg* ] [ jvmarg* ] ]
所有输出类别之间由空格分开。对于包含空格的参数值,在尝试将参数映射到其实际位置参数时,会导致歧义,毕竟在输出中带空格的参数没有被引用或转义。
注意:建议不要编写脚本来解析jps输出,因为输出格式在将来的版本中可能会更改。
简单示例(EXAMPLES)
列出本机上的JVM实例:
jps
18027 Java2Demo.JAR
18032 jps
18005 jstat
以下示例列出了远程主机上的已检测JVM。
此示例,假定jstat服务器,及其内部RMI注册表或单独的外部rmiregistry进程正在远程主机的默认端口(端口1099)上运行,还假设本地主机具有访问远程主机的适当权限。
此示例还包括-l选项:输出类型名称或JAR文件名的长形式。
jps -l remote.domain
3002 /opt/jdk1.7.0/demo/jfc/Java2D/Java2Demo.JAR
2857 sun.tools.jstatd.jstatd
以下示例,列出了具有RMI注册表的非默认端口的远程主机上的JVM实例。
此示例,假定监听2002的内部RMI注册表的jstatd运行在远程主机上。
此示例还使用-m选项:列出传递给Java应用程序的main方法的参数。
jps -m remote.domain:2002
3002 /opt/jdk1.7.0/demo/jfc/Java2D/Java2Demo.JAR
3102 sun.tools.jstatd.jstatd -p 2002
参考文献(SEE ALSO)
· java(1)
· jstat(1)
· jstatd(1)
· rmiregistry(1)
参考文献
- http://docs.oracle.com/javase/8/docs/technotes/tools/unix/jps.html#CHDCGECD
- man 1 jps, version OpenJDK Runtime Environment (build 1.8.0_141-8u141-b15-3-b15)