admin
2026-10-07 06:15:03
当你需要排查网络连接问题、查看端口占用情况,或者分析系统网络性能时,ss 命令应该是你的首选工具。很多人还在使用老旧的 netstat,但实际上 ss 不仅速度更快,而且提供的信息更详细、更准确。
ss(Socket Statistics)是 Linux 系统自带的网络工具,属于 iproute2 软件包的一部分。它直接从内核空间获取 socket 信息,避免了传统 netstat 需要解析 /proc/net/tcp 等文件的性能开销。特别是在处理大量网络连接时,ss 的速度优势非常明显。
本文将带你从零开始掌握 ss 命令,不仅教你基本用法,还会深入讲解如何在实际运维场景中灵活运用这个强大的工具。
1. 为什么你需要从 netstat 迁移到 ss
如果你还在使用 netstat,可能会遇到以下问题:
性能瓶颈:当系统有上万个连接时,netstat 解析 /proc 文件系统会非常慢
信息有限:无法查看详细的 TCP 内部状态,如拥塞控制、重传计时器等
功能缺失:缺少对现代网络特性的支持,如 MPTCP、BPF 过滤器等
相比之下,ss 命令的优势非常明显:
BASH
复制
1
# 对比测试:查看所有 TCP 连接
2
time netstat -tun | wc -l # 可能耗时数秒
3
time ss -tun | wc -l # 几乎瞬时完成
在实际生产环境中,这种性能差异可能意味着故障排查时间从几分钟缩短到几秒钟。
2. ss 命令基础:安装与基本用法
2.1 环境准备与安装
ss 命令通常随 Linux 系统预装,属于 iproute2 包。如果系统中没有,可以通过包管理器安装:
BASH
复制
1
# Ubuntu/Debian
2
sudo apt update && sudo apt install iproute2
3
4
# CentOS/RHEL
5
sudo yum install iproute
6
7
# 验证安装
8
ss --version
2.2 最基本的用法:查看所有连接
不加任何参数时,ss 默认显示所有已建立的非监听连接:
BASH
复制
1
ss
输出示例:
TEXT
复制
1
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
2
tcp ESTAB 0 0 192.168.1.100:ssh 192.168.1.50:56789
3
tcp ESTAB 0 0 192.168.1.100:https 203.0.113.10:443
各列含义:
Netid:协议类型(tcp, udp, unix 等)
State:连接状态
**Rec