启动 Tomcat、Nginx 等应用服务时最常遇到的报错。

现象: bind() to 0.0.0.0:80 failed (98: Address already in use)
原因: 另一个进程已经抢占了该端口。

排查命令
# 查看谁占了80端口
netstat -tnlp | grep :80
# 或者用 ss(更现代)
ss -tnlp | grep :80
# 或者用 lsof
lsof -i:80
如下图,就能查出端口是不是被占用了

然后停掉对应的服务,再启动想启动的服务就行了
[root@master ~]# systemctl stop httpd.service
[root@master ~]# systemctl start nginx
[root@master ~]# netstat -tnlp | grep :80
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 5435/nginx: master
tcp6 0 0 :::80 :::* LISTEN 5435/nginx: master

好了。
当然也可以使用kill比如killall httpd
发表回复