cindysz110 / blog

8 stars 1 forks source link

[Linux] 判断进程假死 #5

Open cindygl opened 6 years ago

cindygl commented 6 years ago

进程状态真假判断

root 用户查看jps进程,发现process information unavailable

[root@hadoop01 tmp]# jps
22385 -- process information unavailable
22148 -- process information unavailable
25143 Jps
22663 -- process information unavailable
[root@hadoop01 tmp]#

查看进程号,看到该进程是由hadoop用户启动的

[root@hadoop01 tmp]# ps -ef | grep 22385
hadoop   22385     1  0 5月19 ?       00:00:18 /usr/java/jdk1.8.0_45/bin/java -Dproc_datanode -Xmx1000m -Djava.net.preferIPv4Stack=true -Dhadoop.log.dir=/opt/software/hadoop-2.8.1/logs -Dhadoop.log.file=hadoop.log -Dhadoop.home.dir=/opt/software/hadoop-2.8.1 -Dhadoop.id.str=hadoop -Dhadoop.root.logger=INFO,console -Djava.library.path=/opt/software/hadoop-2.8.1/lib/native -Dhadoop.policy.file=hadoop-policy.xml -Djava.net.preferIPv4Stack=true -Djava.net.preferIPv4Stack=true -Djava.net.preferIPv4Stack=true -Dhadoop.log.dir=/opt/software/hadoop-2.8.1/logs -Dhadoop.log.file=hadoop-hadoop-datanode-hadoop01.log -Dhadoop.home.dir=/opt/software/hadoop-2.8.1 -Dhadoop.id.str=hadoop -Dhadoop.root.logger=INFO,RFA -Djava.library.path=/opt/software/hadoop-2.8.1/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
root     25207 20019  0 01:19 pts/2    00:00:00 grep --color=auto 22385
[root@hadoop01 tmp]#

切换到hadoop用户,查看进程

[hadoop@hadoop01 ~]$ jps
22385 DataNode
25363 Jps
22148 NameNode
22663 SecondaryNameNode
[hadoop@hadoop01 ~]$

对应服务的进程ID号和root看到的进程号一模一样,判断出进程是真实有效进程。

根本原因

jps命令查看到的是该用户对应的tmp/hsperfdata_username下的文件

[root@hadoop01 tmp]# ls -ltr /tmp/hsperfdata_
hsperfdata_hadoop/ hsperfdata_root/
[root@hadoop01 tmp]# ls -ltr /tmp/hsperfdata_hadoop/
总用量 96
-rw-------. 1 hadoop hadoop 32768 5月  20 01:29 22148
-rw-------. 1 hadoop hadoop 32768 5月  20 01:29 22663
-rw-------. 1 hadoop hadoop 32768 5月  20 01:29 22385
[root@hadoop01 tmp]# ls -ltr /tmp/hsperfdata_root/
总用量 0
[root@hadoop01 tmp]#

生产环境遇到process information unavailable问题解决

  1. jps找到进程号
  2. ps -ef | grep pid查看进程是否存在
  3. 假如不存在,可以去该用户的/tmp/hsperfdata_username下去删除对应的文件
  4. 假如存在,当前用户查看就是process information unavailable不可用,切换到启用进程的用户去检查