端口被占用:Address already in use

启动 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

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注