当前位置:首页 > 文章列表 > 文章 > linux > ss 查看监听端口与进程归属的过滤方法

ss 查看监听端口与进程归属的过滤方法

来源:17golang原创 2026-09-29 05:48:56 0浏览 收藏

在 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 可去掉表头,适合后续脚本处理。

ss 展示监听协议地址端口和进程信息的原创结构图
图1:从监听状态、地址族、端口到进程归属的 ss 信息层次。
# 同时查看 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 不改写括号:

ss 按协议端口和地址族过滤的原创决策图
图2:按 TCP/UDP、端口和 IPv4/IPv6 地址族逐层缩小 ss 结果。
# 精确查看 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 字段,更适合精确排查。

版本声明
本文转载于:17golang原创 如有侵犯,请联系study_golang@163.com删除
Go encoding/xml 自定义 Unmarshaler 的字段映射Go encoding/xml 自定义 Unmarshaler 的字段映射
上一篇
Go encoding/xml 自定义 Unmarshaler 的字段映射
LT画质助手产品站怎么核对?备案信息、下载页与帮助文档入口说明
下一篇
LT画质助手产品站怎么核对?备案信息、下载页与帮助文档入口说明
查看更多
最新文章
查看更多
课程推荐
  • 前端进阶之JavaScript设计模式
    前端进阶之JavaScript设计模式
    设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
    543次学习
  • GO语言核心编程课程
    GO语言核心编程课程
    本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
    516次学习
  • 简单聊聊mysql8与网络通信
    简单聊聊mysql8与网络通信
    如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
    500次学习
  • JavaScript正则表达式基础与实战
    JavaScript正则表达式基础与实战
    在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
    487次学习
  • 从零制作响应式网站—Grid布局
    从零制作响应式网站—Grid布局
    本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
    485次学习
查看更多
AI推荐
  • PubMedQA数据集详解:生物医学问答基准、功能与应用指南
    PubMedQA
    深入了解PubMedQA生物医学问答数据集,涵盖其核心功能、使用方法及在临床决策、药物研发等场景的应用,助力提升NLP模型性能。
    258次使用
  • H2O EvalGPT:开源LLM大模型评估与排行榜工具
    H2O EvalGPT
    H2O EvalGPT是H2O.ai推出的开源LLM评估平台,提供详细的大模型性能排行榜、行业特定基准测试及A/B测试功能,助您快速选择最适合项目的高性能大语言模型。
    304次使用
  • LMArena是什么?伯克利AI模型评估平台使用指南与功能解析
    LMArena
    LMArena是加州大学伯克利分校推出的AI模型匿名评测平台。通过盲测投票机制,用户可对比不同大模型回答并生成实时排行榜,助力开发者优化模型及用户选择最佳AI工具。
    283次使用
  • 斯坦福HELM:大语言模型Holistic Evaluation整体评估框架详解
    HELM
    深入了解斯坦福推出的HELM(Holistic Evaluation of Language Models)大模型评测体系。本文解析其核心功能、安装配置步骤及应用场景,涵盖准确性、公平性、鲁棒性等多维度指标,助力开发者全面优化语言模型性能。
    260次使用
  • MMBench详解:多模态大模型基准测试、功能特点与使用指南
    MMBench
    MMBench是由上海人工智能实验室等机构联合推出的多模态基准测试平台,提供细粒度能力评估、大规模数据集及VLMEvalKit工具。本文详细介绍其核心功能、安装使用方法及应用场景,助力开发者全面评估多模态模型性能。
    68次使用