前言:
本次课程,J哥给我们讲了jps,很多知识点还不是特别熟悉,以下的是我自己梳理的信息
Haoop jps 详解
jps最主要的功能使查看java接口的进程号
jps(Java Virtual Machine Process Status Tool)是JDK 1.5提供的一个显示当前所有 java 进程 pid 的命令,简单实用,非常适合在 linux/unix 平台上简单察看当前java进程的一些简单情况。
注:jps命令有个地方很不好,似乎只能显示当前用户的java进程,要显示其他用户的还是只能用unix/linux的ps命令。
jps常用参数
1、命令jps类似于Linux下的ps,但它只用于列出Java的进程。直接运行jps不加任何参数,可以列出Java程序的进程ID以及Main函数等名称。
其中第一个输出Jps就是jps命令本身,这更加证明此命令的本质也是一个Java程序。
2、参数-q 指定jps只输出进程ID,而不输出类的短名称:
【若泽大数据】生产实战 - jps 真死、假死
[hadoop@hadoop1 ~]$ jps
54450 Jps
10611 NodeManager
5720 NameNode
6030 SecondaryNameNode
5823 DataNode
10511 ResourceManager
[hadoop@hadoop1 ~]$
[hadoop@hadoop1 ~]$ which jps
/usr/java/jdk1.8.0_45/bin/jps
[hadoop@hadoop1 ~]$
[root@hadoop1 ~]# cd /tmp/hsperfdata_hadoop/
[root@hadoop1 hsperfdata_hadoop]# ll
total 160
-rw-------. 1 hadoop hadoop 32768 Dec 17 10:11 10511
-rw-------. 1 hadoop hadoop 32768 Dec 17 10:11 10611
-rw-------. 1 hadoop hadoop 32768 Dec 17 10:11 5720
-rw-------. 1 hadoop hadoop 32768 Dec 17 10:11 5823
-rw-------. 1 hadoop hadoop 32768 Dec 17 10:11 6030
[root@hadoop1 hsperfdata_hadoop]# jps
10611 -- process information unavailable
6325 jar
54487 Jps
5720 -- process information unavailable
6030 -- process information unavailable
5823 -- process information unavailable
10511 -- process information unavailable
[root@hadoop1 hsperfdata_hadoop]# ps -ef |greo 10611
找到该进程的使用用户名称
[root@hadoop1 hsperfdata_hadoop]# su - hadoop
[hadoop@hadoop1 ~]$ jps
10611 NodeManager
5720 NameNode
54524 Jps
6030 SecondaryNameNode
5823 DataNode
10511 ResourceManager
[hadoop@hadoop1 ~]$
[root@hadoop1 rundeck]# jps
10611 -- process information unavailable
6325 jar
5720 -- process information unavailable
6030 -- process information unavailable
54591 Jps
5823 -- process information unavailable
10511 -- process information unavailable
[root@hadoop1 rundeck]#
[root@hadoop1 rundeck]# kill -9 10611
[root@hadoop1 rundeck]# jps
10611 -- process information unavailable
6325 jar
5720 -- process information unavailable
54605 Jps
6030 -- process information unavailable
5823 -- process information unavailable
10511 -- process information unavailable
[root@hadoop1 rundeck]# ps -ef|grep 10611
root 54618 48324 0 10:15 pts/1 00:00:00 grep 10611
[root@hadoop1 rundeck]#
10611信息残留,去/tmp/hsperfdata_hadoop文件夹删除该10611文件
[root@hadoop1 hsperfdata_hadoop]# ll
total 160
-rw-------. 1 hadoop hadoop 32768 Dec 17 10:17 10511
-rw-------. 1 hadoop hadoop 32768 Dec 17 10:15 10611
-rw-------. 1 hadoop hadoop 32768 Dec 17 10:17 5720
-rw-------. 1 hadoop hadoop 32768 Dec 17 10:17 5823
-rw-------. 1 hadoop hadoop 32768 Dec 17 10:16 6030
[root@hadoop1 hsperfdata_hadoop]# rm -f 10611
[root@hadoop1 hsperfdata_hadoop]#
[root@hadoop1 hsperfdata_hadoop]# jps
54626 Jps
6325 jar
5720 -- process information unavailable
6030 -- process information unavailable
5823 -- process information unavailable
10511 -- process information unavailable
[root@hadoop1 hsperfdata_hadoop]# su - hadoop
[hadoop@hadoop1 ~]$ jps
54661 Jps
5720 NameNode
6030 SecondaryNameNode
5823 DataNode
10511 ResourceManager
[hadoop@hadoop1 ~]$
生产:process information unavailable
1.找到进程号jps
2.ps -ef|grep pid是否存在(这步很关键要做判断查看进程是否存在)
3.假如进程不存在,我们可以去该/tmp/hsperfdata_xxx去删除
4.如果存在千万别删,自己查看是不可以的,其他用户查看是可用的。
5不存在举例说明如下:
但我不知道是这个进程是属于哪个用户的我们怎么操作呢,如下图
发现没有进程,到tmp目录下查看
6.如果存在ps -ef |grep pid 看到了用户名,
su 切换过去jps一下就好了
【若泽大数据】生产实际操作,但是少了ps -ef 来确认进程号,要注意
补充1:
做了一次hdfs的停止,先查看jps当前的进程,
可以看到停止的顺序 namenode datanode secondary namenodes
我们在看看停止时,/tmp/hsperfdata_hadoop 有些什么操作,第一次两个进程,后面只剩下一个进程5564慢慢停止,,进程文件也随着进程的消失而消失。
补充2:jps假死
hadoop用户启动hdfs,jps后的进程是正常的,我切换到root用户发现jps进程报错
这时候我们要判断是否是真死还是假死,ps -ef | grep pid
我们查看一下5235进程是否存在发现进程存在,而且是hadoop用户启动的,说明这个是假死状态,进程还在使用中。
关于jps的一些总结:
大数据课程推荐: