1.jps命令简介

选项 作用
-q 只输出VM标识符,省略主类的名称
-m 输出启动时,传给main()函数的参数
-l 输出主类全类名
-v 输出jvm参数

jps命令是显示正在运行的java程序,root用户使用时显示所有运行的java程序,普通用户只显示自己启动的正在运行的java程序,而ps显示所有的进程,包括java程序。然而jps显示的某进程信息不可用时进程真的未启动吗???

2.jps命令位置

  1. which jps #显示jps命令位置
  2. /usr/java/jdk1.8.0_152/bin/jps #可知是属于jdk的
  3. jps #当前linux系统启动了hdfs,有三个进程,如下
  4. 26001 NameNode
  5. 26097 DataNode
  6. 26263 SecondaryNameNode
  7. 26398 Jps

image.gif

3.hadoop进程标识文件位置

默认hdfs进程标识文件在:/tmp/hsperfdata_进程用户名称 /目录下,如下

  1. [hadoop@hadoop002 ~]$ ll /tmp/hsperfdata_hadoop/
  2. total 96
  3. -rw-------. 1 hadoop hadoop 32768 Feb 19 18:55 26001
  4. -rw-------. 1 hadoop hadoop 32768 Feb 19 18:55 26097
  5. -rw-------. 1 hadoop hadoop 32768 Feb 19 18:55 26263

image.gif

4.jps的真真假假

采坑,重要 !!!我们有时再root用户下jps 出现 process information unavailable信息,并没有我们想要的hadoop进程信息,hadoop是没启动成功吗? 真不可用吗?

  1. [root@hadoop002 ~]# jps
  2. 1520 Jps
  3. 26001 -- process information unavailable
  4. 26097 -- process information unavailable
  5. 26263 -- process information unavailable

image.gif
使用ps -ef | grep namenode 验证进程是否存在的,发现进程是存在的,此时process information unavailable是假的,如果此时如 kill -9 这三个进程后依旧显示process information unavailable,这是切换到hadoop用户查看确实进程消失,此时process information unavailable是真的,若想root用户jps不显示残留信息rm -rf hsperfdata_hadoop即可。
注意 : — ps -ef| grep XXX是真正能验证进程是否运行的最佳方式
    — kill进程触发方式: 1、人为 2、进程在Linux看来是耗内存最大的且会影响系统正常运行,系统自动给kill