ss 是什么
ss 是查看连接与套接字信息的现代工具,取代了老的同类命令:它直接读取内核结构,因此输出更快、可过滤的维度更多,还能一并显示内核层面的连接指标。排查连接数异常、端口占用、拥塞与重传时,它通常是第一个该敲的命令。它的过滤表达式支持按协议、状态、端口组合筛选,比把结果丢给文本过滤更精准。
基本信息
| 定位 | 查看连接与套接字信息的命令行工具 |
|---|---|
| 优势 | 直读内核结构,速度快、过滤能力强 |
| 常用维度 | 协议类型、监听或全部、数字显示、进程归属、统计摘要 |
| 过滤能力 | 可按状态与端口组合筛选 |
| 权限 | 查看他人进程的套接字需要更高权限 |
典型使用场景
- 确认服务是否在监听预期端口,以及对应进程是谁
- 按状态统计连接数,定位连接堆积或泄漏
- 查看内核层面的往返时延与拥塞窗口,判断链路质量
- 统计概要信息,用一行输出快速了解全局状态
- 排查端口占用与冲突,确认是哪一个进程占着端口
高频用法
高频用法
ss -s # 概要统计,各状态数量
ss -lntp # 只看监听的连接式套接字与所属进程
ss -tan state established | wc -l # 统计已建立连接数
ss -tan state time-wait | head # 只看停留等待的连接
ss -tin dport = :443 | head # 带内核指标,观察往返时延与拥塞窗口
ss -uanp # 查看数据报套接字
ss -xap # 查看本机进程间通信套接字常用选项
| 选项 | 作用 | 常见搭配场景 |
|---|---|---|
| 协议选择 | 在连接式、数据报、本机通信之间切换 | 按要查的协议选 |
| 监听与全部 | 只看监听端口或看全部套接字 | 确认服务是否在听 |
| 数字与解析 | 不做域名与服务名解析 | 排查时用数字更快 |
| 显示进程 | 列出持有套接字的进程 | 定位是谁占了端口 |
| 内核指标与定时器 | 显示拥塞、重传与超时信息 | 链路质量排查 |
| 概要统计 | 各状态数量汇总 | 秒级了解全局 |
排查要点
- 队列字段在监听状态与连接状态下含义不同,读错会得出相反结论
- 用过滤表达式按状态与端口筛选,比管道过滤更精确也更快
- 查看他人进程需要更高权限,权限不足时进程列会为空,不要以为是没人持有
接收队列与发送队列在不同状态下含义不同:监听状态下它们表示已完成与未完成建连的队列长度,连接状态下则表示应用尚未读走或尚未发出的字节数,用错场景会把正常值当成异常。
过滤表达式里的端口与状态条件要写对,写错条件不会报错而是返回空结果,容易被误解为「没有这类连接」,从而错过真正的故障线索。