当前位置:首页 > 文章列表 > 文章 > linux > Linux ss定位端口监听进程与连接状态的方法

Linux ss定位端口监听进程与连接状态的方法

来源:17golang原创 2026-09-23 13:08:53 0浏览 收藏

Linux 上排查“某个端口到底被谁占用”,建议先把 ss 当成一张套接字关系表来读:-l 看监听,-p 关联进程,-n 保留真实端口号,最后用状态过滤器确认连接是否真的建立。这样能把“端口没开”“端口被错误进程占用”和“服务已监听但没有客户端连接”分开。

官方地址:https://github.com/iproute2/iproute2/blob/main/man/man8/ss.8

要点速览
  • ss -lntup 适合第一轮确认 TCP、UDP 监听及进程。
  • sudo ss -lntp 能减少非本用户进程显示不完整的问题。
  • state established 只统计已建立连接,不能替代监听表。

先用监听表确认端口是否真的打开

第一轮不要直接猜服务名,也不要只看某一行输出。-l 表示只看监听套接字,-n 禁止端口和服务名解析,-t-u 分别加入 TCP、UDP,-p 请求显示进程信息。

# 第一轮同时查看 TCP/UDP 监听、数字端口和关联进程
sudo ss -lntup

# 只确认 8080 是否存在监听,避免被其他端口干扰
sudo ss -lntp '( sport = :8080 )'

如果列表没有目标端口,先不要把问题归结为防火墙:服务可能尚未启动、只绑定了回环地址,或者实际监听的是 IPv6。查看 0.0.0.0:8080127.0.0.1:8080[::]:8080 时,要把绑定地址一并记录。

Linux ss监听表把TCP端口、绑定地址与进程映射到同一张静态关系图
图1:监听与进程映射说明图,展示端口、协议、绑定地址和进程之间的关系,不是运行截图。

把端口、PID 和程序名关联起来

监听行中的 users:(()) 是进程关联信息。普通用户通常只能看到自己有权限访问的进程;遇到进程名为空或信息不完整时,优先用 sudo 重跑,而不是立即判断端口由内核或未知程序占用。

# 只看 TCP 监听,并请求显示 PID/程序名
sudo ss -lntp

# 以 PID 继续检查命令行和工作目录,确认是否是目标服务
pid=1234  # 将这里替换为 ss 输出中的真实 PID
ps -p "$pid" -o pid,ppid,user,comm,args

如果同一程序出现多个监听端口,先按 PID 聚合,再看绑定地址。一个进程可能同时监听 IPv4 与 IPv6,也可能由父进程负责监听、子进程负责处理请求。端口归属确认后,再回到服务管理器检查启动参数,避免直接杀掉共享监听的进程。

观察结果更可能的含义下一步
没有监听行服务未监听或绑定地址不符合预期检查启动状态与监听配置
有监听但无 PID权限不足或进程信息被隐藏使用 sudo 重试
PID 与预期服务不同端口冲突或旧实例未退出核对命令行和父子进程

用连接状态判断“服务可达”还是“只有端口”

监听只说明套接字在等待连接,不说明业务请求已经到达。要看 TCP 连接,可使用 -a 同时包含监听与非监听套接字,再用状态表达式缩小结果。

# 查看所有 TCP 套接字,保留数字地址便于逐项比对
sudo ss -ant

# 只看已经建立的连接,并限定本地端口为 8080
sudo ss -nt state established '( sport = :8080 )'

ESTAB 能证明 TCP 三次握手已经完成,但它仍不等于应用层健康;还需要结合服务日志、响应耗时和请求内容。TIME-WAIT 是连接关闭后的内核状态,数量多不应直接当作监听失败。若要观察重传和定时器,可增加 -o,但它提供的是 TCP 层线索。

Linux ss连接状态过滤说明图展示监听、ESTAB和TIME-WAIT的排查边界
图2:连接状态过滤结构图,区分监听、已建立和关闭后的等待状态,不是运行截图。

一份可复用的 ss 排查清单

  1. 先运行 sudo ss -lntup,记录协议、绑定地址、端口与 PID。
  2. 若无结果,分别检查 IPv4/IPv6 绑定和服务启动状态。
  3. 若进程不符预期,用 ps 核对 PID、父进程和完整参数。
  4. 若监听正常,再用 sudo ss -nt state established 判断是否有实际连接。
  5. 看到大量 TIME-WAITSYN-RECV 时,把它们作为连接生命周期信号,结合应用日志和负载数据分析。

这套顺序的关键是先回答“谁在监听”,再回答“谁连进来了”。端口号、绑定地址、PID 和状态四列同时记录,通常比反复切换多个工具更容易复盘。

常见问题

ss 为什么看不到程序名?

最常见原因是权限不足。对监听查询使用 sudo ss -lntp;若仍为空,再核对 PID 是否已快速退出。

看到 ESTAB 就代表接口可用吗?

不代表。ESTAB 只说明 TCP 连接建立,应用层仍可能超时、返回错误或没有完成协议握手。

ss 和 netstat 应该怎么选?

新排障优先使用 ss。它属于 iproute2,能直接按连接状态和过滤表达式查询;只有在旧脚本明确依赖 netstat 输出格式时才保留兼容方案。

版本声明
本文转载于:17golang原创 如有侵犯,请联系study_golang@163.com删除
Go crypto/rand.Read返回不足字节时的调用约束Go crypto/rand.Read返回不足字节时的调用约束
上一篇
Go crypto/rand.Read返回不足字节时的调用约束
Go os/exec设置工作目录与环境变量的可靠写法
下一篇
Go os/exec设置工作目录与环境变量的可靠写法
查看更多
最新文章
查看更多
课程推荐
  • 前端进阶之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模型性能。
    187次使用
  • H2O EvalGPT:开源LLM大模型评估与排行榜工具
    H2O EvalGPT
    H2O EvalGPT是H2O.ai推出的开源LLM评估平台,提供详细的大模型性能排行榜、行业特定基准测试及A/B测试功能,助您快速选择最适合项目的高性能大语言模型。
    243次使用
  • LMArena是什么?伯克利AI模型评估平台使用指南与功能解析
    LMArena
    LMArena是加州大学伯克利分校推出的AI模型匿名评测平台。通过盲测投票机制,用户可对比不同大模型回答并生成实时排行榜,助力开发者优化模型及用户选择最佳AI工具。
    201次使用
  • 斯坦福HELM:大语言模型Holistic Evaluation整体评估框架详解
    HELM
    深入了解斯坦福推出的HELM(Holistic Evaluation of Language Models)大模型评测体系。本文解析其核心功能、安装配置步骤及应用场景,涵盖准确性、公平性、鲁棒性等多维度指标,助力开发者全面优化语言模型性能。
    183次使用
  • CMMLU中文大模型评估基准:功能、使用教程与应用场景解析
    CMMLU
    深入了解CMMLU中文评估基准,涵盖67个学科主题,提供数据集下载、Zero-shot/Five-shot评估方法及排行榜,助力优化中文语言模型性能。
    172次使用
微信登录更方便
  • 密码登录
  • 注册账号
登录即同意 用户协议隐私政策
返回登录
  • 重置密码