Linux 怎么查询指定端口由哪个进程监听
来源:17golang原创
时间:2026-09-06 08:08:50 111浏览 收藏
Linux 上想知道“8080 到底被谁占了”,首选不是盯着一长串进程列表,而是先查询监听 socket,再把端口对应到进程。最小可用命令是 sudo ss -ltnp 'sport = :8080':-l 只看监听,-t 限定 TCP,-n 保留数字地址和端口,-p 显示使用该 socket 的进程。若没有结果,再分别检查 UDP、IPv6 和权限,不要直接把“查不到”理解成“端口空闲”。
- 查 TCP 监听:
sudo ss -ltnp 'sport = :端口'。 - 查 UDP 监听:
sudo ss -lunp 'sport = :端口';需要时同时看 TCP 和 UDP。 Local Address:Port说明绑定范围,users字段用于确认进程名、PID 和文件描述符。
没有特殊依赖需求的场景下,推荐优先用ss命令查询,绝大多数主流Linux发行版都默认预装了这个工具,查询速度快返回信息全;部分旧系统没有ss的话,用netstat、lsof也可以快速得到想要的结果。
先用 ss 看清监听 socket 与进程
ss 是 iproute2 提供的 socket 统计工具。它默认不会只列出监听 socket,所以定位服务时要显式加 -l;端口映射又需要进程信息,因此还要加 -p。直接查看本机 TCP 监听可以这样写:
# 只看 TCP 监听,并显示进程归属
sudo ss -ltnp
输出中的 Local Address:Port 是监听地址和端口,users 部分通常会给出进程名、pid 和 fd。例如绑定到 127.0.0.1:8080 的服务只能从本机回环地址访问;绑定到 0.0.0.0:8080 则表示监听所有 IPv4 地址。这里先看绑定地址,再判断“端口被占用”是否真的影响了外部访问。
如果只知道协议而不知道端口,先用这条命令建立范围;如果已经知道端口,直接加过滤器会更快。-n 很有用,它避免把端口转换成服务名称,让你看到明确的数字,便于复制到后续排查命令。

按端口过滤,再回到服务管理层
例如排查 8080 端口时,推荐把过滤表达式交给 ss,比先输出全部结果再用文本匹配更清楚:
# 只查本机 TCP 源端口为 8080 的监听 socket
sudo ss -ltnp 'sport = :8080'
这里的 sport 表示源端口;对监听 socket 来说,它就是服务绑定的本地端口。端口前的冒号表示不限定本地地址。若要同时限定地址,可以写成 src 127.0.0.1:8080,但 IPv4 和 IPv6 条件混用时要谨慎,先分别查询通常更容易解释结果。
UDP 服务没有 TCP 的连接状态,查询时换成 -u:
# 只查 UDP 监听,并显示进程信息
sudo ss -lunp 'sport = :8080'
也可以用 sudo ss -lntup 'sport = :8080' 同时覆盖 TCP 和 UDP。若看到了 PID,下一步不要凭进程名猜服务,先确认完整命令行,再判断它由哪个服务管理单元启动:
# 用 PID 查看完整命令行;把 1234 换成 ss 输出里的真实 PID
tr '\0' ' '
ss 负责回答“哪个进程持有监听 socket”,/proc 和 systemctl 负责补充“这个进程从哪里启动、属于哪个服务”。这两个层次不要混为一谈。

查不到结果时,按协议、地址和权限排查
| 现象 | 优先检查 | 处理方式 |
|---|---|---|
| TCP 查询为空 | 协议或端口是否判断错误 | 改用 -lunp 查 UDP,并确认端口数字 |
| 只看到 IPv6 | 服务是否绑定 :: | 分别用 -4、-6 缩小地址族 |
| 有监听但没有进程名 | 当前用户权限 | 用 sudo 重试,避免把权限问题当成空闲端口 |
| 本机能访问,外部不能访问 | 绑定地址和防火墙 | 先看 Local Address,再检查防火墙和云安全策略 |
如果只关心 IPv4 或 IPv6,可以把条件写得更明确:
# 只查 IPv4 TCP 监听
sudo ss -4ltnp 'sport = :8080'
# 只查 IPv6 TCP 监听
sudo ss -6ltnp 'sport = :8080'
最后记住,ss 看到的是当前网络命名空间里的 socket。容器、网络命名空间或宿主机之间互相隔离时,宿主机上的一次查询未必能代表容器内部;这时要进入对应的命名空间或容器再查。
常见问题
为什么 ss -ltn 能看到端口,却看不到进程?
因为 -p 才请求显示使用 socket 的进程信息,而且查看其他用户的进程通常需要更高权限。先用 sudo ss -ltnp 重试。
ss 和 lsof -i 应该选哪个?
按端口和协议筛选时,ss 更直接;需要从打开的文件反查进程、用户和文件描述符时,可以再用 lsof -nP -i :8080 交叉确认。
为什么 8080 没有 TCP 监听,但服务仍然可用?
它可能监听的是 UDP、IPv6、Unix socket,或者服务实际运行在另一个容器和网络命名空间。先用 TCP/UDP、-4/-6 和容器内查询逐项缩小范围。
本文依据 ss(8) Linux 手册中的选项与过滤语法组织示例;生产环境执行关闭或重启前,先确认 PID、命令行和服务单元,避免误操作。
-
501 收藏
-
501 收藏
-
501 收藏
-
501 收藏
-
501 收藏
-
358 收藏
-
155 收藏
-
397 收藏
-
141 收藏
-
423 收藏
-
218 收藏
-
221 收藏
-
400 收藏
-
422 收藏
-
198 收藏
-
270 收藏
-
488 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 立即学习 543次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 立即学习 516次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 立即学习 500次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 立即学习 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 立即学习 485次学习