pid内容为各进程的进程号

通过ps -ef | grep a 查询a的pid,精确杀死某进程

[hadoop@hadoop000 sbin]$ cat hadoop-daemon.sh |grep pid

HADOOP_PID_DIR The pid files are stored. /tmp by default.( pid默认存储在/tmp目录)

pid= H A D O O P P I D D I R / h a d o o p − HADOOP_PID_DIR/hadoop- HADOOPP​IDD​IR/hadoop−HADOOP_IDENT_STRING-$command.pid

if [ -f $pid ]; then

if kill -0 ​​cat $pid​​ > /dev/null 2>&1; then

echo $command running as process ​​cat $pid​​. Stop it first.

echo $! > $pid

if [ -f $pid ]; then

TARGET_PID=​​cat $pid​

rm -f $pid

删除pid,进程不挂,服务正常

生产上:

pid 最好不要放到/tmp,若要放到/tmp目录,则需要修改自动清理机制。

/tmp目录默认:一个月清理一次临时文件

修改pid路径步骤:

1.先修改sbin目录下hadoop-daemon.sh文件

hdfs yarn hbase pid文件被删除解决办法:修改hadoop-daemon.sh yarn-daemon.sh hbase-daemon.sh中PID_DIR存储路径_big data

指定HADOOP_PID_DIR储存路径

2.再修改 yarn-daemon.sh 文件

hdfs yarn hbase pid文件被删除解决办法:修改hadoop-daemon.sh yarn-daemon.sh hbase-daemon.sh中PID_DIR存储路径_临时文件_02

指定YARN_PID_DIR储存路径

3.重新启动Hadoop:

会看的刚才指定的pid路径

hadoop-2.8.1]$ ll

total 164

drwxrwxr-x. 2 hadoop hadoop 4096 Jul 6 04:53 bin

drwxrwxr-x. 3 hadoop hadoop 4096 Jun 2 2017 etc

drwxrwxr-x. 2 hadoop hadoop 4096 Jun 2 2017 include

drwxrwxr-x. 3 hadoop hadoop 4096 Jun 2 2017 lib

drwxrwxr-x. 2 hadoop hadoop 4096 Jun 2 2017 libexec

-rw-rw-r–. 1 hadoop hadoop 99253 Jun 2 2017 LICENSE.txt

drwxr-xr-x. 3 hadoop hadoop 12288 Jul 7 21:13 logs

-rw-rw-r–. 1 hadoop hadoop 15915 Jun 2 2017 NOTICE.txt

drwxrwxr-x. 2 hadoop hadoop 4096 Jul 7 21:13 pid

-rw-r–r--. 1 hadoop hadoop 1366 Jun 2 2017 README.txt

drwxrwxr-x. 2 hadoop hadoop 4096 Jul 7 21:09 sbin

drwxrwxr-x. 4 hadoop hadoop 4096 Jun 2 2017 share

4.目录pid里面的内容:

hadoop-2.8.1]$ ll pid

total 20

-rw-rw-r–. 1 hadoop hadoop 5 Jul 7 21:12 hadoop-hadoop-datanode.pid

-rw-rw-r–. 1 hadoop hadoop 5 Jul 7 21:12 hadoop-hadoop-namenode.pid

-rw-rw-r–. 1 hadoop hadoop 5 Jul 7 21:13 hadoop-hadoop-secondarynamenode.pid

-rw-rw-r–. 1 hadoop hadoop 5 Jul 7 21:13 yarn-hadoop-nodemanager.pid

-rw-rw-r–. 1 hadoop hadoop 5 Jul 7 21:13 yarn-hadoop-resourcemanager.pid

修改成功