一条命令查清端口被谁占了
【摘要】 服务启动报端口占用?用 ss -lntp 精确定位监听进程,配合 lsof 看连接;容器场景要进容器复查,并注意 127.0.0.1 与 0.0.0.0 的监听差异。
启动服务时报 Address already in use,先定位再动手,别急着重启。
1. 看监听进程
ss -lntp 'sport = :8080'
-l 只看监听态,-n 不解析域名,-t 限 TCP,-p 显示进程。比 netstat 快,很多新系统干脆没装 netstat。
2. 要看连接就换 lsof
lsof -i :8080 -P -n
它同时列出监听和已建立的连接,"端口通但服务没响应"时很好用。
3. 容器场景要再查一层
宿主机上看到的可能是 docker-proxy,真正的进程在容器里:
docker ps --format '{{.Names}}\t{{.Ports}}' | grep 8080
docker exec -it <容器名> ss -lntp
最容易踩的坑:看地址是 127.0.0.1:8080 还是 0.0.0.0:8080。前者只监听本机,外网必定不通,先确认这个再查防火墙。
小结:ss -lntp 找监听者,lsof -i 看连接,容器内再复查一遍。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)