灯下哥谭 灯下哥谭
首页
关于
  • Hermes Agent 平台
  • Claude Code
  • OpenClaw
  • GPU 推理节点运维
  • DeepSeek Harness
  • MySQL 运维知识地图
  • Elasticsearch 运维知识地图
  • Redis 运维知识地图
  • TiDB 体系
  • DBA 常用 SQL 与命令
  • Nginx 运维知识地图
  • Prometheus 监控
  • Docker
  • Systemd
  • Iptables
  • Firewalld
  • Sshd
  • MySQL8 运维 SOP 手册
  • MySQL 实战 45 讲(读书笔记)
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

灯下哥谭

灯还亮着
首页
关于
  • Hermes Agent 平台
  • Claude Code
  • OpenClaw
  • GPU 推理节点运维
  • DeepSeek Harness
  • MySQL 运维知识地图
  • Elasticsearch 运维知识地图
  • Redis 运维知识地图
  • TiDB 体系
  • DBA 常用 SQL 与命令
  • Nginx 运维知识地图
  • Prometheus 监控
  • Docker
  • Systemd
  • Iptables
  • Firewalld
  • Sshd
  • MySQL8 运维 SOP 手册
  • MySQL 实战 45 讲(读书笔记)
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 工作笔记

    • 实用linux命令-nc
    • 实用linux命令-lsof
    • 实用linux命令-ss
      • 场景一:查看监听端口与服务对应关系
      • 场景二:连接状态排查
      • 场景三:套接字内存与性能信息
      • 场景四:UDP 与原始套接字
      • 常用参数速查表
        • 基础参数
        • 高级参数
      • ss 与 netstat 对照表
      • 坑与边界
    • Bash 备忘清单
    • Ansible 备忘清单
    • Linux 文件权限的三个反直觉陷阱
    • GPT分区使用 `parted` 扩展分区的操作流程
    • 实用linux命令-sed
    • VSCode快捷键备忘录
    • 实用linux命令-curl
  • 容器与编排

  • Nginx

  • 监控

  • 网络安全

  • 其他

  • Linux笔记
  • 工作笔记
灯下哥谭
2025-03-30
目录

实用linux命令-ss

本文定位:速查手册。 按诊断场景组织 ss 的常用查询方式,供排查网络问题时快速_copy-paste_,与 netstat 的替代关系见文末对照表。

版本说明

本文基于 iproute2 套件中的 ss 命令(随 Linux 内核 2.6+ 普及)。ss 是 netstat 的现代替代品,在 CentOS 6+/Ubuntu 14.04+ 等主流发行版默认安装。ss 与 netstat 的核心参数语义一致(-t TCP、-u UDP、-l 监听、-n 数字形式),迁移成本极低。


# 场景一:查看监听端口与服务对应关系

定位「哪个进程占用了某端口」是最常见需求。

查看所有监听端口:

ss -tlnp
1
  • -t:TCP
  • -l:仅监听(Listening)
  • -n:数字形式显示地址和端口(不解析域名/服务名)
  • -p:显示进程信息

查看指定端口被谁占用:

ss -tlnp | grep :80
1

易错点:-p 需要 root 权限才能查看其他用户的进程。普通用户执行时,非本用户的进程显示为 -。


# 场景二:连接状态排查

服务出现「连接数耗尽」或「大量 TIME_WAIT」时,用状态过滤快速定位。

查看所有已建立的连接:

ss -t state established
1

统计各状态的连接数(排查 TIME_WAIT 泛滥):

ss -tan | awk '{print $1}' | sort | uniq -c | sort -rn
1

查看连接到某服务的客户端列表:

ss -tn dst :3306
1

查看某 IP 发起的所有连接:

ss -tn src 192.0.2.100
1

# 场景三:套接字内存与性能信息

排查缓冲区溢出、重传率高等性能问题时使用。

显示详细 TCP 内部信息(窗口大小、重传计数等):

ss -ti
1

常用字段解释:

  • cwnd:拥塞窗口
  • ssthresh:慢启动阈值
  • retrans:重传计数
  • rtt:往返时间

显示套接字内存使用情况:

ss -tm
1

若 rcv_buf 或 snd_buf 接近系统限制,考虑调整内核参数 net.core.rmem_max / wmem_max。


# 场景四:UDP 与原始套接字

DNS、QUIC 等协议基于 UDP,排查时容易遗漏。

查看 UDP 监听端口:

ss -ulnp
1

查看所有 UDP 连接(含已建立):

ss -uan
1

查看原始套接字(ping、traceroute 等底层工具使用):

ss -w -a
1

# 常用参数速查表

# 基础参数

参数 含义 netstat 等价
-t TCP 套接字 -t
-u UDP 套接字 -u
-l 仅监听 -l
-a 所有(监听+已建立) -a
-n 数字显示(不解析) -n
-p 显示进程 -p

# 高级参数

参数 含义 典型用法
-s 显示统计摘要 ss -s
-i 显示 TCP 内部信息 ss -ti
-m 显示内存信息 ss -tm
-o 显示计时器信息 ss -to
-4 仅 IPv4 ss -tln4
-6 仅 IPv6 ss -tln6

# ss 与 netstat 对照表

场景 ss 命令 netstat 命令 性能差异
查看监听端口 ss -tlnp netstat -tlnp ss 快 10-100 倍
查看所有连接 ss -tan netstat -tan ss 快 10-100 倍
查看进程关联 ss -tlnp netstat -tlnp 两者都需要 root
查看路由表 ip route netstat -r 用 iproute2 替代
查看接口统计 ip -s link netstat -i 用 iproute2 替代

为什么 ss 更快:netstat 从 /proc/net/ 逐个读取文件,内核态-用户态切换开销大;ss 直接使用 sock_diag netlink 接口批量获取,减少系统调用。

何时还用 netstat:某些精简容器镜像只装 net-tools 没装 iproute2 时。


# 坑与边界

1. -p 参数看不到进程的几种情况

  • 权限不足:非 root 用户只能看到自己的进程
  • 连接已关闭但套接字未释放:进程退出后短暂残留
  • 内核线程创建的套接字:无对应用户进程

2. TIME_WAIT 状态的套接字

高并发短连接场景(如 HTTP keep-alive 关闭时)容易产生大量 TIME_WAIT:

ss -tan | grep TIME_WAIT | wc -l
1

若该数值持续增长且接近 net.ipv4.ip_local_port_range 范围(默认 32768-60999),会导致「端口耗尽」无法建立新连接。

3. ss 显示不全

默认 ss 只显示已建立和非监听套接字的一小部分,完整列表需要 -a:

ss -tan  # 简要
ss -tuan # 全量(含 UDP)
1
2

🤖 Agent 可直接解析的元数据块(点击展开)
{
  "_meta": {
    "doc_version": "2025-03-30",
    "article_id": "linux-ss-cheatsheet",
    "profile_context": "any",
    "estimated_setup_time": "5min"
  },
  "quick_start": {
    "list_listening": "ss -tlnp",
    "find_process_by_port": "ss -tlnp | grep :80",
    "established_connections": "ss -t state established",
    "count_by_state": "ss -tan | awk '{print $1}' | sort | uniq -c | sort -rn",
    "tcp_internals": "ss -ti",
    "memory_usage": "ss -tm"
  },
  "safety_rules": [
    "-p 参数需要 root 权限查看全量进程信息",
    "高并发场景 TIME_WAIT 过多时需关注端口耗尽",
    "容器环境可能缺少 iproute2 套件"
  ],
  "verification": {
    "iproute2_installed": "which ss",
    "kernel_support": "ss -s | head -5",
    "port_binding": "ss -tlnp | grep ':PORT'"
  }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#SRE#Linux
上次更新: 9/11/2026

← 实用linux命令-lsof Bash 备忘清单→

最近更新
01
DeepSeek Harness 实战 06|学习笔记:插件、工具、技能不在同一个维度上 原创
09-11
02
DeepSeek Harness 实战 05|让两个编码 Agent 共用一份长期记忆 原创
09-09
03
DeepSeek Harness 实战 04|学习笔记:从「已知限制」里读出三处设计张力 原创
09-08
更多文章>
Theme by Vdoing
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式