Welcome
admin
admin

2026-10-07 06:15:03

活动情报
1924 520

当你需要排查网络连接问题、查看端口占用情况,或者分析系统网络性能时,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