jps概述
jps是JDK提供的一个显示当前所有 java 进程 pid 的命令。
注: jps只能查看当前运行的Java进程 ,其他进程需要通过ps命令查看
jps使用
usage: jps [-help]
jps [-q] [-mlvV] [<hostid>]
Definitions:
<hostid>: <hostname>[:<port>]
-q : 只输出进程PID
-m : 显示传递给该Java进程的main方法的参数
-l : 显示完整的包名,应用主类名,jar的完全路径名
-v : 显示传递给JVM的参数
jps原理
java程序在启动以后,会在/tmp/hsperfdata_{userName}/下生成几个文件,名字就是java进程的pid。因此列出当前运行的java进程,就是列出这个目录下的文件名。 至于系统的参数什么,就可以解析这几个文件获得。
注: 如果是普通用户运行jps,则是显示/tmp/hsperfdata_{该用户名}/ 下的信息, 如果是root运行jps,则是显示所有用户/tmp/hsperfdata_{userName}/下的信息。
process information unavailable 问题
当jps后,出现process information unavailable信息时,该进程可能存在,可能不存在。需要判断:
1、通过jps查看进程号
2、通过ps -ef | grep 进程号, 查看是否有该进程。
3、若ps查到了该进程,说明该进程运行正常 。可切换到该进程所属的用户下去查看(通过查看/tmp/hsperfdata_{userName}/可以找到在用户下)
4、若ps没有查到该进程,说明这个进程已经死掉了。可以去/tmp/hsperfdata_{userName}/下把对应的Pid删了