通过14个案例掌握 ss 命令监控 socket 连接

SS 是一个命令行工具,它显示套接字统计数据并监视 Linux 系统的网络连接。它已经取代了 netstat 命令,而 netstat 命令现在已被弃用。ss 命令比 netstat 命令快得多,并且打印出更详细的网络统计信息。在本指南中,我们将重点介绍如何使用 ss 命令监视 Linux 系统上的套接字连接。

(1) 查看所有套接字连接

In its basic form, without any arguments, the ss command displays all the socket or network connections (TCP/UDP/UNIX) as shown:

不带任何参数,显示所有套接字或网络连接(TCP/UDP/UNIX)

$ ss

为了更容易查看输出,可以将输出通过管道输送到 less,如下所示。

$ ss | less

(2) 查看 TCP / UDP 套接字连接

要只查看 TCP scoket 连接,可以使用 -t 选项,如下所示

$ ss -t

To filter out UDP connections, pass the -ua option as shown.

要过滤掉 UDP 连接,可以使用 -ua 选项,如下所示

$ ss -ua

(3) 查看所有监听套接字连接

要了解所有侦听套接字(默认情况下通常省略),请使用 -l 选项

$ ss -l

(4) 查看所有监听 TCP 套接字连接

缩小搜索结果的范围,只列出 TCP 侦听连接,可以使用 -lt 选项。

$ ss -lt

(5) 查看所有监听 UDP 套接字连接

缩小搜索结果的范围,只列出 UDP 侦听连接,可以使用 -lu 选项。

$ ss -lu

(6) 查看所有侦听和非侦听套接字连接

-a 选项将打印出所有已连接的和未侦听的套接字,如下所示。

$ ss -a

(7) 查看 IPv4 / Ipv6 套接字连接

要查看当前的 IPv4 套接字连接,可以使用 -4 选项。

$ ss -4

要查看当前的 IPv6 套接字连接,可以使用 -6 选项。

[email protected]:~$ ss -6
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
icmp6 UNCONN 0 0 *:ipv6-icmp *:*
[email protected]:~$

(8) 查看所有套接字连接的摘要

如果您想查看套接字连接的总体统计数据,包括 TCP 和 UDP、IPv4 和 IPv6 连接的数量,只需像下面这样通过 -s 选项。这将以表格格式打印出结果。

$ ss -s

(9) 通过端口号过滤连接

您还可以通过端口号过滤连接。例如,在下面的示例中,我们过滤了连接到 SSH 端口 22 的连接

$ ss -at '( dport = :22 or sport = :22 )'

(10) 查看不解析主机名的套接字连接

缺省情况下,ss 命令尝试将 ip 地址解析为主机名。如果您想要 ss 命令阻止 ip 地址到主机名的解析,那么使用 -n 选项,示例如下所示

[email protected]:~$ ss -nt
State Recv-Q Send-Q Local Address:Port Peer Address:Port
ESTAB 0 0 192.168.1.80:22 192.168.1.3:53155
ESTAB 0 36 192.168.1.80:22 192.168.1.3:53152
[email protected]:~$

(11) 列出套接字连接的进程名和 pid

使用 -p 选项列出与网络连接相关联的进程名和 pid,如下所示

$ ss -p | more

(12) 扩展输出

使用 -e 选项显示套接字连接的扩展输出。扩展输出将显示套接字的 uid、套接字的 inode 号和该套接字的 uuid。

列出扩展的 tcp 侦听套接字

$ ss -elt

列出扩展的 udp 侦听套接字

$ ss -elu

(13) 查看内存使用情况

使用 -m 选项可以查看套接字连接消耗了多少内存

下面的命令将显示 tcp 连接的内存使用情况

$ ss -mt

(14) 终结 IPv4 / IPv6 套接字连接

可以使用 -k 选项强制终止或杀死 ipv4 / ipv6 套接字连接

假设我们想杀死 ipv4 ssh 套接字连接

[email protected]:~$ ss -4
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
tcp ESTAB 0 0 192.168.1.80:ssh 192.168.1.3:53155
tcp ESTAB 0 36 192.168.1.80:ssh 192.168.1.3:53152
[email protected]:~$

要终止第二个 ssh 会话,请使用下面的 ss 命令

[email protected]:~$ sudo ss -K dst 192.168.1.3 dport = 53152

有关 ss 命令使用的更多选项,请参见手册页

$ man ss

我的开源项目

作者:鸠摩智首席音效师原文地址:https://segmentfault.com/a/1190000042571206

%s 个评论

要回复文章请先登录注册