zookeeper报错:Address already in use(转载:https://blog.csdn.net/lsr40/article/details/77775858)
报错大致类型如下:
这里我是zookeeper开启的时候,报了Address已经被使用。其实这个问题还挺常见的,比如我们重复打开Tomcat就可以看到这个报错。
解决方法如下:
最简单的方法:jps看看,然后看看有没有对应的进程,有就直接kill -9 掉就好了
但是如上的方法,一般来说jps你是看不到你想要的东西的,所以要用如下的方法(这里是演示的namenode,它的端口号是8020)
第一:netstat -apn | grep 2181
(这里的端口号,替换成你被占用的那个端口号,比如Tomcat是8080,namenode是8020之类的,还有最好用root来使用这些系统级的命令)
然后得到这样的结果:
最后一排其实就pid,然后我们通过kill -9 pid 就可以杀掉对应的进程(例如,kill -9 4438)
但是kill前,我们还是要确定下到底这个哪里开的进程能不能随便杀掉,所以。。。
第二:ps -ef | grep 4438
这样就可以看看你这个进程到底是谁开的,在哪里开的,如下图:
这边显示了两行,每行都是以用户名开头的,第一个就是普通用户开启的namenode进程,第二个是root用户执行的ps -ef | grep 4438这个命令生成的,就好像我们每次jps的时候,就有jps这个进程。
第三:最后一步,其实就是kill -9 强制杀掉就没问题了!!!!