ss 查看监听端口与进程归属的过滤方法
来源:17golang原创
时间:2026-09-29 05:48:56 326浏览 收藏
在 Linux 上确认“哪个服务正在监听 8080 端口”,我通常先用 ss,而不是把 netstat、ps 和文本过滤串成一长串。它能一次显示协议、监听地址、端口以及进程归属。最小可用命令是 sudo ss -lntup;如果只查 TCP 8080,则用 sudo ss -lntp '( sport = :8080 )'。
-l只看监听,-n保留数字地址和端口,-t/-u区分 TCP/UDP。-p显示进程名、PID 和 fd;看不到归属时先补sudo。- 过滤器要写清协议和端口,最后再核对 IPv4、IPv6 与容器网络。
先用 ss 建立监听清单
盘点主机时,先分别看 TCP 和 UDP。-l 把已建立连接排除掉,-n 防止服务名解析让结果变慢或改变展示形式,-H 可去掉表头,适合后续脚本处理。

# 同时查看 TCP/UDP 监听,并保留数字地址与进程信息 sudo ss -lntup # 只查看 TCP 或 UDP 监听,便于区分同一端口的不同协议 sudo ss -lntp sudo ss -lnup
输出中的 Local Address:Port 是本机绑定的地址和端口,Peer Address:Port 在监听场景通常不是排查重点。0.0.0.0:8080 表示监听所有 IPv4 地址,[::]:8080 表示 IPv6 通配地址;不能只看到端口数字就认定两者一定是同一个监听对象。
让端口行显示进程归属
加上 -p 后,常见结果会出现类似 users:(("nginx",pid=2140,fd=7)) 的信息:进程名帮助快速判断服务,pid 用于继续查启动参数,fd 则表示该进程持有的套接字文件描述符。普通用户权限不足时,端口仍可能列出来,但进程归属字段可能为空或不完整。
# 用 PID 继续核对启动命令;变量只接收人工确认过的数字 PID pid=2140 ps -p "$pid" -o pid=,ppid=,user=,comm=,args= # 查看某个进程打开的网络文件描述符,辅助确认端口归属 sudo ls -l "/proc/$pid/fd" 2>/dev/null | grep 'socket:'
如果多个进程都显示同一个服务名,不要直接杀进程。先用 ps 看父进程和启动参数,再结合 systemd、容器或 supervisor 的管理关系判断应该重载、停止还是修正配置。
用过滤表达式锁定目标端口
ss 的过滤表达式比简单的 grep 8080 更稳,因为它能把端口放在协议字段中匹配。TCP 监听可以这样写,外层引号用于让 shell 不改写括号:

# 精确查看 TCP 本地源端口 8080 的监听项 sudo ss -lntp '( sport = :8080 )' # 查 UDP 8080;UDP 没有 TCP 的 LISTEN 状态,但仍可查看本地绑定 sudo ss -lnup '( sport = :8080 )' # 只看 IPv4 或 IPv6,排除地址族造成的误判 sudo ss -4lntp '( sport = :8080 )' sudo ss -6lntp '( sport = :8080 )'
如果目标服务绑定的是具体地址,例如 127.0.0.1:8080,远程客户端无法直接访问并不等于端口没有监听。相反,绑定 0.0.0.0 只说明 socket 接受所有 IPv4 本地地址,是否能从外部访问还要看防火墙、安全组和网络命名空间。
权限、容器与结果边界
排查宿主机服务时优先使用 sudo,并把命令输出保存为一次性的证据,而不是反复刷新后凭印象判断。若宿主机看不到容器内进程,先确认端口是否通过发布规则映射到宿主机;进入容器或对应网络命名空间后再执行同样的 ss 查询。
# 记录一次带时间的监听清单,便于和发布前后结果对比 date -Is sudo ss -H -lntup | sort # 只在确认服务由 systemd 管理后查看状态,避免把 PID 当成服务名 systemctl status nginx --no-pager
最后按四项复查:协议是否正确、监听地址是否符合预期、进程 PID 是否仍存活、访问路径是否还受防火墙或容器映射影响。这样即使 ss 显示了端口,也不会把“本机有监听”误判成“外部一定可访问”。
相关问题
为什么能看到端口却看不到进程?
最常见原因是没有足够权限,先用 sudo ss -lntp 重试;如果仍为空,再检查是否查询了正确的网络命名空间。
ss 和 grep 过滤有什么区别?
grep 只是匹配显示文本,可能把远端端口或进程参数中的数字一并匹配;ss 过滤器直接作用于 socket 字段,更适合精确排查。
-
426 收藏
-
387 收藏
-
242 收藏
-
238 收藏
-
402 收藏
-
369 收藏
-
475 收藏
-
229 收藏
-
471 收藏
-
415 收藏
-
277 收藏
-
298 收藏
-
347 收藏
-
116 收藏
-
150 收藏
-
464 收藏
-
108 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 立即学习 543次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 立即学习 516次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 立即学习 500次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 立即学习 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 立即学习 485次学习