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` 类似。