1.总述
使用jps命令可以列出目标系统上运行的JVM进程。如果不指定任何选项,该命令将列出本地JVM进程ID和主类或可运行jar包的短名。
注意:
- 只有运行该命令的用户具有访问权限的JVM进程才能被该命令列出。
- 对于运行与docker容器中的JVM进程,jps命令不能列出与该工具不在同一个docker实例中的JVM进程。此时,可以使用操作系统的命令如
ps
列出JVM进程的PID。 - 该命令是实验性的,在将来的版本可能不受支持。
2.选项参数
由于jps命令极其简单,选项参数也很少,常见的使用形式如下:
jps [-q] [-mlvV] [hostid]
jps [-help]
各选项的含义如下:
-q
输出结果中忽略主类名、jar包名和传给mian
方法的参数,只列出JVM进程标识ID。
-mlvV
- -m 展示传递给
main
方法的参数,嵌入式JVM输出null
- -l 展示主类的全包名或者可运行jar包的全路径名
- -v 展示JVM进程的选项参数
- -V 同-q选项,只列出JVM进程标识ID
hostid
希望展示JVM进程信息的主机标识。hostid
包含通信协议、主机IP、通信端口等可选信息,是一个如下格式的URI:
[protocol:][[//]hostname][:port][/servername]
protocol
通信协议,如果protocol和hostname都没有指定,那么默认协议为本地协议即列出本地主机上的JVM进程。如果protocol没有指定,但指定了hostname,那么默认协议为rmi
。
hostname
目标主机的IP地址或主句名。如果没有指定,默认为本地主机。
port
主机通信的端口。本地主机将忽略端口参数,远程主机则实现各异。对于rmi协议,端口表示远程主机rmiregistry
服务的端口,默认值为1099。
servername
根据实现的不同,参数含义不用。本地协议将忽略该参数,对于rmi协议,该参数表示远程主机rmi服务名。
-help
显示该命令的帮助信息
3.示例
jps命令的输出格式如下:
lvmid [ [classname|JARfilename|"Unknown"] [arg*] [jvmarg*] ]
列出本地JVM进程的示例如下:
jps
18032 jps
18005 jstat
列出远程主机JVM进程的示例如下(需要具有访问远程主机的权限):
jps -l remote.domain
3002 /opt/jdk1.7.0/demo/jfc/Java2D/Java2Demo.JAR
2857 sun.tools.jstatd.jstatd
使用-l
选项列出主类全名或jar包全路径名,没有指定端口,则访问默认的1099端口。