jps命令和pid进程剖析

2.jps命令的真相

jps最主要的功能使查看java接口的进程号,它只用于列出Java的进程

2.1位置哪里的
[hadoop@10-9-140-90 hadoop-2.6.0-cdh5.7.0]$ which jps
/usr/java/jdk1.8.0_45/bin/jps

2.2对应的进程的标识文件在哪   /tmp/hsperfdata_进程用户名称

因为在这里是jps是以hadoop用户启动的,所以jps进程的标识文件是:hsperfdata_hadoop

后面可以的进程号用于jps的时候显示出来。

2.3 jps查看结果
root用户看所有用户的jps结果,但是有些信息是正常信息,正常进程,有些信息是不可用的(process information unavailable),这些信息是真的不可用(假进程),还是假的不可用(正常进程)。真假判断的区别是什么:ps -ef|grep pid看一下是否存在。不要上来就把它给kill掉,因为你kill的可能是正常的进程。所以kill之前需要ps -ef判断一下是否存在。
普通用户只能看自己的jps结果

2.4 process information unavailable 情况
真假判断:

jps查看的不一定准确

ps -ef|grep namenode 真正判断进程是否可用

①jps找到进程号

②ps -ef|grep pid 查看是否存在

hadoop用户下:jps

[hadoop@10-9-140-90 hadoop-2.6.0-cdh5.7.0]$ jps
25027 Jps
24757 DataNode
24917 SecondaryNameNode
24635 NameNode
[hadoop@10-9-140-90 hadoop-2.6.0-cdh5.7.0]$ 

root用户下jps:

[root@10-9-140-90 ~]# jps
25041 Jps
24757 -- process information unavailable
24917 -- process information unavailable
24635 -- process information unavailable
[root@10-9-140-90 ~]# 

生产环境上:
hadoop不同的组件针对不同的用户:比如hdfs组件是hdfs用户,hbase组件是hbase用户
当我们部署某个脚本的时候,是用root用户或sudo权限的用户去获取这些组件的进程,但是你去jps获取的时候,肯定都是process information unavailable(进程信息不可用)这种值,这个时候不能直接kill掉,然后启动相关的进程,需要先看一下这些不可用是真的还是假的。但是有时候linux会自动把它给kill掉。所以可能需要每隔1分钟或几小时或者其他定期检查一下进程是否正常。

kill有三种方式:一是认为kill,二是进程在Linux看来是耗内存最大的 自动给你kill,还一个

[hadoop@10-9-140-90 hsperfdata_hadoop]$ ll
total 96
-rw------- 1 hadoop hadoop 32768 Feb 24 15:26 24635
-rw------- 1 hadoop hadoop 32768 Feb 24 15:26 24757
-rw------- 1 hadoop hadoop 32768 Feb 24 15:26 24917

[hadoop@10-9-140-90 tmp]$ rm -rf hsperfdata_hadoop    把这个文件夹删除(删除之前要确认里面有没有其它的不能被删的)

[hadoop@10-9-140-90 tmp]$ jps                                        hadoop用户jps  没有三个进程
25863 Jps

[root@10-9-140-90 ~]# jps                                                  root用户jps       也没有三个进程
25875 Jps

但是 sbin/start-dfs.sh再启动的时候,它说三个进程还没有停止掉,需要先把它们停止掉。

可以ps -ef|grep namenode/datanode/secondarynamenode 找到相应的进程号,把它们kill掉。

然后再sbin/start-dfs.sh就可以了,而且在tmp/目录又能看到hsperfdata_hadoop 这个文件夹了。

3.pid文件 集群进程启动和停止要的文件   (默认是在tmp目录下)

进入/tmp/目录下有下面三个pid文件,这三个文件是hadoop集群进程启动和停止需要的。如果删除掉了,启动和停止的时候会有问题。

 -rw-rw-r-- 1 hadoop hadoop    6 Feb 24 15:07 hadoop-hadoop-datanode.pid
-rw-rw-r-- 1 hadoop hadoop    6 Feb 24 15:07 hadoop-hadoop-namenode.pid
-rw-rw-r-- 1 hadoop hadoop    6 Feb 24 15:07 hadoop-hadoop-secondarynamenode.pid

需要注意的是:Linux会定期删除tmp目录下一些文件和文件夹  30天周期

生产上有两种方式可以处理这种情况:

①在其它地方创建一个目录,修改目录权限为777权限,然后修改/home/hadoop/app/hadoop-2.6.0-cdh5.7.0/etc/hadoop下的hadoop-env.sh 文件,把地址修改成你创建的目录地址即可。


mkdir /data/tmp
chmod -R 777 /data/tmp
export HADOOP_PID_DIR=/data/tmp

②可以把上面三个pid文件加入到tmp目录删除规则里面,每次删除tmp目录下一些文件的时候,不删除你加的这些文件。

那么为什么会用到pid文件?脚本里面会用到

[hadoop@10-9-140-90 sbin]$ cat hadoop-daemon.sh    (举例)

查看这个脚本可以发现里面有需要pid的地方。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值