说在文前,菜鸟一个,如果有说的不对的,还请见谅,望能指出,让我这井底之蛙也能见见世面。

今天分享下一个比较常见的问题,端口被占用。

报错大致类型如下:

 

这里我是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 强制杀掉就没问题了!!!!

备注kill的批量杀进程用法:kill -9 $(pgrep -f kafka) 可以把所有kafka的进程杀了

 

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐