jdk自带的jps命令可以查看当前JVM中运行的Java进程ID,java程序在启动以后,会在java.io.tmpdir指定的目录下,就是临时文件夹里,生成一个类似于hsperfdata_User的文件夹,这个文件夹里(在Linux中为/tmp/hsperfdata_{userName}/),有几个文件,名字就是java进程的pid。
输入jps -help,可以输出jps的具体用法,如下所示:
usage: jps [-help]
jps [-q] [-mlvV] [<hostid>]
Definitions:
<hostid>: <hostname>[:<port>]
ps命令使用方式为 jps [options] [hostid],其中options为命令行选项,jps支持-q,-m,-l,-v,-V,-J选项。hostid为要监控的主机地址端口,默认为当前主机的默认端口。如下为jps支持的选项详细说明:
jps -q 仅仅生成进程ID列表
jps -m 输出传递给main方法的参数,如果为嵌入式JVM,输出可能为空
jps -l 输出应用程序主类的完整包名称或者应用程序jar包的完整路径和进程ID
jps -v 输出进程ID,主类名称或者jar包名称和启动应用程序所使用的jvm参数
jps -V 输出进程ID,主类名称或者jar包名称
jps -J 传递的参数为启动jps命令所需要的参数,比如-J-Xms48m将启动内存设置为48MB,-J选项用于将选项传递给执行用Java编写的应用程序的底层JVM
上面的命令只是监控输出本机的进程,除此之外jps命令还可以监控远程主机中的Java进程。我们可以通jps <hostid>来输出远程主机的进程列表,前提是远程主机需要启动rmi服务。我们可以通过jstatd命令开启一个rmi服务。可以参考jstatd部分介绍。使用方式如下:
jps -l remote.domain
jps -m remote.domain:2002
上面的命令是将进程信息输出到屏幕,除此之外,还可以将进程输出到文件里,命令为:
jps > pid.txt
更多介绍可以参考官方文档jps-Java虚拟机进程状态工具