ss 命令是 Linux 系统中的一个强大工具,用于显示 socket 统计信息(如 TCP、UDP 连接)。它比传统的 netstat 命令更高效,尤其在处理大量连接时。以下我将逐步解释其用法,帮助您快速掌握。
1. 基本语法
ss 命令的基本格式为:
ss [选项] [过滤表达式]
- 选项:用于指定显示哪些类型的 socket(如 TCP、UDP)。
- 过滤表达式:用于筛选特定连接(如端口号或 IP 地址)。
2. 常用选项
ss 命令支持多种选项,以下是几个最常用的:
-t:显示所有 TCP socket。-u:显示所有 UDP socket。-l:显示所有监听(listening)的 socket。-a:显示所有 socket(包括监听和非监听状态)。-p:显示与 socket 关联的进程信息(如进程 ID)。-n:以数字形式显示 IP 地址和端口号(不解析域名)。-s:显示 socket 的摘要统计信息(如总连接数)。-4:仅显示 IPv4 socket。-6:仅显示 IPv6 socket。
3. 常用过滤表达式
您可以使用过滤表达式来精确定位连接:
- 按端口过滤:
dport = :端口号(目标端口)或sport = :端口号(源端口)。 - 按 IP 地址过滤:
dst 地址(目标 IP)或src 地址(源 IP)。 - 组合过滤:例如,
dport = :80显示所有目标端口为 80 的连接。
4. 实用示例
以下是一些常见场景的示例命令,您可以在终端中直接运行:
-
显示所有 TCP socket:
ss -t输出将列出所有 TCP 连接的状态(如 ESTAB、LISTEN)。
-
显示所有 UDP socket 并包含进程信息:
ss -up输出会显示 UDP 连接的进程 ID 和名称。
-
显示所有监听中的 socket(TCP 和 UDP):
ss -l -
显示目标端口为 80 的 TCP 连接:
ss -t 'dport = :80' -
显示所有 IPv4 socket 的摘要统计:
ss -s -4输出会给出总连接数、监听数等摘要。
-
显示特定 IP 地址(如 192.168.1.1)的 socket:
ss dst 192.168.1.1
5. 注意事项
- 权限问题:某些选项(如
-p)需要 root 权限才能查看进程信息。使用sudo运行命令,例如:sudo ss -tp - 效率优势:ss 命令直接读取内核数据,比 netstat 更快,适合在服务器高负载时使用。
- 帮助文档:运行
man ss或ss --help查看完整选项和说明。
通过以上步骤,您可以高效地监控网络连接。如果您有特定场景(如分析 Web 服务器连接),请提供更多细节,我可以给出更针对性的建议!
1035

被折叠的 条评论
为什么被折叠?



