jps整理

作者: guaren2009 | 来源:发表于2020-05-14 08:59 被阅读0次

一、jps的使用

# 首先要看一下jps的命令在哪

[hadoop@hadoop hadoop]$ which jps

/usr/java/jdk1.8.0_181/bin/jps

# jps的命令帮助

[hadoop@hadoop hadoop]$ jps --help

illegal argument: --help

usage: jps [-help]

      jps [-q] [-mlvV] [<hostid>]

Definitions:

    <hostid>:      <hostname>[:<port>]

常用的jps命令

(1)直接使用jps查看进程及pid号

(2)使用jps -l显示进程的全限定名

[hadoop@hadoop hadoop]$ jps -l

12644 org.apache.hadoop.yarn.server.nodemanager.NodeManager

16804 sun.tools.jps.Jps

11878 org.apache.hadoop.hdfs.server.namenode.NameNode

12552 org.apache.hadoop.yarn.server.resourcemanager.ResourceManager

12154 org.apache.hadoop.hdfs.server.namenode.SecondaryNameNode

二、jps和pid文件

以Hadoop为例,Hadoop的jps进程文件是放在/tmp/hsperfdata_hadoop下的

其中 hsperfdata_hadoop是以hsperfdata_为前缀,后面接上用户名

[hadoop@hadoop hsperfdata_hadoop]$ pwd

/tmp/hsperfdata_hadoop

[hadoop@hadoop hsperfdata_hadoop]$ jps

18135 SecondaryNameNode

17977 DataNode

17851 NameNode

17325 ResourceManager

17422 NodeManager

18270 Jps

# 查看进程的jps文件,文件名就是pid号

[hadoop@hadoop hsperfdata_hadoop]$ ll

总用量 160

-rw-------. 1 hadoop hadoop 32768 5月  14 08:45 17325

-rw-------. 1 hadoop hadoop 32768 5月  14 08:45 17422

-rw-------. 1 hadoop hadoop 32768 5月  14 08:45 17851

-rw-------. 1 hadoop hadoop 32768 5月  14 08:45 17977

-rw-------. 1 hadoop hadoop 32768 5月  14 08:45 18135

# 我们把DataNode的进程jps文件改个名字

[hadoop@hadoop hsperfdata_hadoop]$ mv 17977 17977.bak

#再次查看就会发现通过jps命令查看不到DataNode进程了,且相关的进程pid文件也被删除了

[hadoop@hadoop hsperfdata_hadoop]$ jps

18135 SecondaryNameNode

17851 NameNode

17325 ResourceManager

17422 NodeManager

18319 Jps

[hadoop@hadoop hsperfdata_hadoop]$ ll

总用量 128

-rw-------. 1 hadoop hadoop 32768 5月  14 08:50 17325

-rw-------. 1 hadoop hadoop 32768 5月  14 08:50 17422

-rw-------. 1 hadoop hadoop 32768 5月  14 08:50 17851

-rw-------. 1 hadoop hadoop 32768 5月  14 08:50 18135

# 然而,通过 ps -ef 来查看进程,发现DataNode实际是活着的

[hadoop@hadoop hsperfdata_hadoop]$ ps -ef | grep DataNode

hadoop    17977      1  1 08:44 ?        00:00:05 /usr/java/jdk1.8.0_181/bin/java -Dproc_datanode -Xmx1000m -Djava.net.preferIPv4Stack=true -Dhadoop.log.dir=/home/hadoop/app/hadoop-2.6.0-cdh5.16.2/logs -Dhadoop.log.file=hadoop.log -Dhadoop.home.dir=/home/hadoop/app/hadoop-2.6.0-cdh5.16.2 -Dhadoop.id.str=hadoop -Dhadoop.root.logger=INFO,console -Djava.library.path=/home/hadoop/app/hadoop-2.6.0-cdh5.16.2/lib/native -Dhadoop.policy.file=hadoop-policy.xml -Djava.net.preferIPv4Stack=true -Djava.net.preferIPv4Stack=true -Djava.net.preferIPv4Stack=true -Dhadoop.log.dir=/home/hadoop/app/hadoop-2.6.0-cdh5.16.2/logs -Dhadoop.log.file=hadoop-hadoop-datanode-hadoop.log -Dhadoop.home.dir=/home/hadoop/app/hadoop-2.6.0-cdh5.16.2 -Dhadoop.id.str=hadoop -Dhadoop.root.logger=INFO,RFA -Djava.library.path=/home/hadoop/app/hadoop-2.6.0-cdh5.16.2/lib/native -Dhadoop.policy.file=hadoop-policy.xml -Djava.net.preferIPv4Stack=true -server -Dhadoop.security.logger=ERROR,RFAS -Dhadoop.security.logger=ERROR,RFAS -Dhadoop.security.logger=ERROR,RFAS -Dhadoop.security.logger=INFO,RFAS org.apache.hadoop.hdfs.server.datanode.DataNode

hadoop    18342  16699  0 08:51 pts/1    00:00:00 grep --color=auto DataNode

# 如果是将pid文件移走,发现jps查看不到相关的进程,再移动回来后,就又能查看到了

[hadoop@hadoop hsperfdata_hadoop]$ ll

总用量 128

-rw-------. 1 hadoop hadoop 32768 5月  14 08:57 17325

-rw-------. 1 hadoop hadoop 32768 5月  14 08:56 17422

-rw-------. 1 hadoop hadoop 32768 5月  14 08:57 17851

-rw-------. 1 hadoop hadoop 32768 5月  14 08:57 18135

[hadoop@hadoop hsperfdata_hadoop]$ jps

18135 SecondaryNameNode

17851 NameNode

17325 ResourceManager

17422 NodeManager

18367 Jps

[hadoop@hadoop hsperfdata_hadoop]$ mv 18135 /tmp/

[hadoop@hadoop hsperfdata_hadoop]$ jps

17851 NameNode

17325 ResourceManager

18381 Jps

17422 NodeManager

[hadoop@hadoop hsperfdata_hadoop]$ mv /tmp/18135 ./

[hadoop@hadoop hsperfdata_hadoop]$ jps

18135 SecondaryNameNode

18394 Jps

17851 NameNode

17325 ResourceManager

17422 NodeManager

有时候我们还能通过jps命令看到某个进程 -- process information unavailable

表示这个进程不可用 ,但这时候一定要去查看一下 ps -ef |grep pid,这个进程可能是活着的 

三、结论

(1)通过jps来查看一个进程是否活着是不保险的  要用 ps -ef 来查看,特别是做监控的时候,监控脚本一定要用ps -ef 

(2)通过jps来查看一个进程是否正常可用,也是不可靠的 ,有时查看到 -- process information unavailable,但其实进程是活着的,要用ps -ef 来查看

相关文章

网友评论

      本文标题:jps整理

      本文链接:https://www.haomeiwen.com/subject/fjsznhtx.html