> 网络管理 > ss

ss 命令指南:查看套接字统计信息(netstat 替代)

`ss` 命令(套接字统计)是用于检查 Linux 系统中的网络套接字相关信息的强大且现代的实用程序。它替代了旧的 `netstat` 命令,提供更快、更详细和更高效的套接字信息。它是监控系统网络活动、解决问题的必备工具,能够显示网络连接状态、监听端口、路由表等。通过本指南,您可以学习 `ss` 命令的各种使用方法。

ss 概述

`ss` 命令通过内核的 `netlink` 接口直接获取套接字信息,因此在连接数量较多的系统中比 `netstat` 快得多。此外,它还提供了 `netstat` 不提供的更多 TCP 状态信息和详细的套接字统计。在现代 Linux 系统中,强烈建议使用 `ss` 来查询与网络相关的信息。

ss 的主要作用

`ss` 命令主要用于以下目的:

主要应用领域

  • 检查网络连接和监听端口: 显示系统中所有活动的 TCP、UDP 和 UNIX 套接字。
  • 进程-端口映射: 检查哪个进程正在使用特定端口。
  • 查看路由表: 显示定义 IP 数据包传输路径的路由表。
  • 网络接口统计: 提供每个网络接口的包发送和接收统计。
  • 套接字状态详细分析: 深入分析 TCP 连接的详细状态(例如:`ESTAB`、`LISTEN`、`TIME-WAIT` 等)及其统计信息。

`ss` vs `netstat`

`ss` 是 `netstat` 的现代且强大的替代品。

  • ss: 现代、快速、直接访问内核的套接字统计、完全支持 IPv6、提供更多过滤选项。
  • netstat: 遗留工具,基于 `/proc` 文件系统,在大规模连接时可能较慢,IPv6 支持不完善。

主要 ss 命令选项

`ss` 命令可以组合多种选项,以详细过滤和显示所需的网络信息。

1. 套接字类型和状态过滤

2. 输出格式和详细信息

3. 路由和其他

生成的命令:

请尝试组合命令。

描述:

`ss` 执行命令。

通过组合这些选项,您可以与 AI 一起虚拟地执行命令。

使用示例

通过 `ss` 命令的各种使用示例,有效地监控和分析系统的网络连接和套接字状态。

查看所有活动的 TCP 连接和监听端口

sudo ss -tulpn

以数字地址显示当前系统中所有激活的 TCP 套接字(包括监听),同时显示相关程序的名称和 PID。

仅查看所有监听(Listening) TCP 端口

sudo ss -tlpn

以数字格式显示当前等待连接的所有 TCP 监听端口。在检查 Web 服务器、数据库等服务端口是否打开时非常有用。

检查使用特定端口的进程

sudo ss -tlpn | grep :22

检查使用端口 `22`(SSH)的所有 TCP 连接和监听端口的详细信息。(对 SSH 服务器诊断很有用)

查看所有处于 ESTABLISHED 状态的 TCP 连接

ss -t state established

显示当前激活并进行数据通信的所有 TCP 连接。在检查外部连接是否正常时非常有用。

查看处于 TIME-WAIT 状态的套接字数量

ss -s | grep -i time-wait

检查 TCP 连接结束后处于 `TIME-WAIT` 状态的套接字数量。如果这个数量过多,可能会导致系统资源耗尽。

查看所有 UDP 套接字

ss -ulpn

检查当前系统中使用的所有 UDP 套接字连接和监听端口。

查看路由表

ss -r

显示系统的 IP 路由表。与 `ip route show` 类似。


相同类别命令