ss 是 iproute2 中比 netstat 更快、更轻量的网络工具,直接读取内核 socket 信息,不依赖 /proc,广泛预装且替代已废弃的 netstat;常用命令如 ss -tuln 查监听端口、ss -tn 查 ESTABLISHED 连接、ss -tuln sport=:22 按端口过滤,支持高效条件组合与进程关联(需 root)。

ss 是 iproute2 套件中的网络工具,比 netstat 更快、更轻量,且能直接读取内核 socket 信息,不依赖 /proc(在某些容器或受限环境中更可靠)。Linux 发行版已普遍默认安装 ss,而 netstat 在较新系统中常被标记为废弃(如 CentOS 8+、Ubuntu 20.04+ 默认不装 net-tools)。
查看所有监听端口(等效于 netstat -tuln)
这是最常用场景,用于排查服务是否成功启动并监听指定端口:
- ss -tuln:显示 TCP/UDP 的监听(listening)socket,数字格式(不解析主机名和服务名)
-
ss -tulnp:加 p 需要 root 权限,可显示对应进程名和 PID(如
nginx: master或1234/sshd) - 对比:
netstat -tuln输出字段多、解析慢;ss默认列更紧凑,关键信息(State、Recv-Q、Send-Q、Local Address:Port、Peer Address:Port、Process)一目了然
查看 ESTABLISHED 连接(等效于 netstat -tn)
用于诊断当前活跃连接,比如检查客户端连上了哪个服务器端口:
- ss -tn:只显示 TCP 已建立连接(不含监听)
- ss -tn state established:显式过滤 ESTABLISHED 状态(更精准)
- 支持组合条件,例如:
ss -tn dst 192.168.1.100:80查目标为该 IP+端口的连接;ss -tn src :22查本地从 22 端口发起的连接
按进程或端口快速过滤
比 netstat 的 grep 更高效,避免文本解析开销:
- 查特定端口:
ss -tuln sport = :22(本地源端口 22),ss -tuln dport = :3306(目标端口 3306) - 查某个进程:
ss -tulpn | grep nginx(需 root 才能看到 p 字段),或直接用ss -tulpn '( sport == :80 or dport == :80 )' - 查特定协议+状态组合:
ss -uan state unconnected(UDP 未连接 socket)
常见 netstat 命令到 ss 的对照速查
不必死记,理解字段逻辑即可迁移:
-
netstat -an | grep :80→ss -tn sport = :80 or dport = :80 -
netstat -tlnp | grep :443→ss -tlnp sport = :443 -
netstat -s(统计摘要)→ss -s(输出更简洁,含 TCP/UDP 总连接数、内存使用等) -
netstat -r(路由表)→ 不是 ss 职责,改用ip route或route -n










