1、进入/usr/local/services/zookeeper/zookeeper-3.5.3/logs
2、查看日志[root@iZuf6c68ideedt77tt3t6qZ logs]# ls
version-2 zookeeper-root-server-iZuf6c68ideedt77tt3t6qZ.out
[root@iZuf6c68ideedt77tt3t6qZ logs]# tail -200f zookeeper-root-server-iZuf6c68ideedt77tt3t6qZ.out
发现端口被占用,奇怪默认端口不是2181吗?
3、查看端口对应的pid [root@iZuf6c68ideedt77tt3t6qZ logs]# netstat -apn | grep 8080
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 24386/java
[root@iZuf6c68ideedt77tt3t6qZ logs]# kill -9 24386
4、 再次启动正常[root@iZuf6c68ideedt77tt3t6qZ bin]# zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /usr/local/services/zookeeper/zookeeper-3.5.3/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
5、占用原因:
zookeeper最近的版本中有个内嵌的管理控制台是通过jetty启动,也会占用8080 端口。 通过查看zookeeper的官方文档,发现有3种解决途径: (1).删除jetty。 (2)修改端口。 修改方法的方法有两种,一种是在启动脚本中增加 -Dzookeeper.admin.serverPort=你的端口号.一种是在zoo.cfg中增加admin.serverPort=没有被占用的端口号 (3)停用这个服务,在启动脚本中增加"-Dzookeeper.admin.enableServer=false"
顺带普及:
1)说明:
Linux的所有进程都保存在/proc/目录下,保存形式为:/proc/进程号。进入到进程号目录后,里面有一个cwd链接文件即指向的进程的的目录。
2) 操作:
A:确定进程号。如:26692;
B:查找进程执行的文件。ps aux | grep 26692;
C:确定进程所在的目录。ll /proc/26692;