什么是jps
jps(Java Virtual Machine Process Status Tool)是JDK 1.5提供的一个显示当前所有java进程pid的命令,简单实用,非常适合在linux/unix平台上简单察看当前java进程的一些简单情况。
jps位于JDK的bin目录下,其作用是显示当前系统的java进程情况及其id号。
jps相当于Solaris进程工具ps。不像”pgrep java”或”ps -ef grep java”,jps并不使用应用程序名来查找JVM实例。因此,它查找所有的Java应用程序,包括即使没有使用java执行体的那种(例如,定制的启动 器)。
另外,jps仅查找当前用户的Java进程,而不是当前系统中的所有进程。
原理
jdk中的jps命令可以显示当前运行的java进程以及相关参数,它的实现机制如下:
java程序在启动以后,会在java.io.tmpdir指定的目录下,就是临时文件夹里,生成一个类似于hsperfdata_User的文件夹,这个文件夹里(在Linux中为/tmp/hsperfdata_{userName}/),有几个文件,名字就是java进程的pid,因此列出当前运行的java进程,只是把这个目录里的文件名列一下而已。 至于系统的参数什么,就可以解析这几个文件获得。
下图就是/tmp下hadoop用户的进程文件
process information unavailable问题
jps出现process information unavailable 问题解决办法
首先 ps -ef | grep pid查看进程是否存在 如果存在,切换到所属用户查看,如图
如果ps -ef | grep pid不存在,则是真死进程,则需进入/tmp/hsperfdata_{userName}/下,删除该pid文件,再jps则不会出现此进程