ss 是什么
ss 用来查看套接字的统计信息,是 netstat 的现代替代:列出监听端口、显示已建立的连接、按状态过滤、输出连接总量统计,也能给出占用端口的进程。它的输出列固定、解析友好,脚本里比老工具可靠得多。信创平台的服务器版与桌面版都随系统提供,用法一致。日常最常用的场景是两件:确认某个端口有没有在监听,以及在一堆连接里按状态或端口找出可疑与异常的那部分。
基本信息
| 所属 | iproute2 工具集,各发行版普遍预装 |
|---|---|
| 查看监听 | 加监听与数字选项,配合协议选项区分 TCP 与 UDP |
| 显示进程 | 加进程选项,需要相应权限 |
| 按状态过滤 | 可指定连接状态,如已建立、等待关闭 |
| 统计概览 | 可输出按协议分类的连接数量统计 |
| 适用平台 | Kylin V10 / UOS / openEuler 通用 |
典型使用场景
- 确认服务是否在监听:核对监听地址与端口是否与预期一致
- 排查端口占用:找出到底是哪个进程占用了目标端口
- 定位异常连接:按状态过滤大量半开或等待回收的连接
- 连接数概览:快速判断当前连接总量与分布是否异常
- 交付巡检:导出监听端口清单,核对暴露面
- 验证收敛效果:调整服务监听地址后复核结果
典型用法
典型用法
ss -tulnp | head -20 # 查看监听端口与进程
ss -tulnp | grep ':8080' # 只看关心端口
ss -tnp state established | head # 只看已建立的 TCP 连接
ss -tn state time-wait | wc -l # 统计等待回收的连接数
ss -s # 连接总量按协议分类概览
ss -tn state established '( dport = :443 or sport = :443 )' | head # 按端口过滤输出列与状态读法
| 项目 | 含义 | 关注点 |
|---|---|---|
| State | 连接状态 | 监听态与已建立态含义完全不同 |
| Local Address:Port | 本机地址与端口 | 通配地址对外可达,回环地址仅本机 |
| Peer Address:Port | 对端地址与端口 | 用于确认连接来源 |
| Process | 占用套接字的进程 | 无权限时该列为空属正常 |
| Recv-Q / Send-Q | 收发队列长度 | 持续非零通常意味着处理不及时 |
| 等待回收状态 | 连接已结束、等待内核回收 | 数量大且持续增长需结合连接速率判断 |
查看进程名需要相应权限:普通用户执行时进程列可能为空,这属于权限限制而不是异常。核对占用端口的进程时,用具备权限的账号复核,不要据此断定端口未被占用。
容器与端口映射场景要分层看:宿主机的连接视图只反映宿主机的套接字,容器内部的监听关系要在容器或编排平台侧核对。两边对不上时,先确认映射规则再考虑应用问题。