前言
公司服务器异常down机导致所有项目都需要重新启动,在本菜启动zookeeper的时候发现zk无法正常启动,错误如下
[root@maisitest zookeeper-3.4.5]# bin/zkServer.sh start
JMX enabled by default
Using config: /root/zookeeper/zookeeper-3.4.5/bin/../conf/zoo.cfg
Starting zookeeper ... already running as process 2860..
上边信息提醒linux进程2860已经被占用,但是查了一下2860的进程也没有被占用,看了了zkServer.sh的启动脚本,发现异常问题所在:
检查问题所在
检查进程占用情况
[root@maisitest bin]# lsof -i:2860
[root@maisitest bin]#
zkServer.sh启动脚本
echo -n "Starting zookeeper ... "
if [ -f $ZOOPIDFILE ]; then
if kill -0 `cat $ZOOPIDFILE` > /dev/null 2>&1; then
echo $command already running as process `cat $ZOOPIDFILE`.
exit 0
fi
fi
看到$ZOOPIDFILE,想到应该是进程ID文件已经存在,导致启不起来。
解决方案
去zoo.conf文件下看了看zookeeper的dataDir,发现zookeeper_server.pid已经存在,最后一次修改时间就是早上,由于机器上次是因为断电异常关闭,大概导致了这个pid file的残留。删除掉原来的zookeeper_server.pid文件,重新启动即可。