本文演示在Linux操作系统下的ss命令(socket statistics)的各种使用示例。ss(套接字统计信息)是一个命令行工具,用于监视套接字连接并显示Linux系统的套接字统计信息。它可以显示PACKET套接字、TCP套接字、UDP套接字、DCCP套接字、RAW套接字、Unix域套接字等的统计信息。它是netstat命令的绝佳替代品,另外,ss命令比netstat命令要快得多,并且可以打印出更详细的网络统计信息。如果您熟悉netstat命令,您将更容易理解ss命令,因为它使用类似的命令行选项来显示网络连接信息。参考使用netstat命令来检查Linux中的TCP连接状态。
1、列出所有socket连接和查看所有socket连接
1]、列出所有socket连接
基本的ss命令,不带任何参数,它显示所有套接字或网络连接,如下所示:
$ ss
输出信息解释:
Netid–套接字类型。常见的类型是TCP、UDP、u_str(Unix流)和u_seq(Unix序列)。
State–套接字的状态。常见状态为ESTAB(已建立)、UNCONN(未连接)、LISTEN(正在侦听)、CLOSE-WAIT和SYN-SENT。
Recv-Q–队列中收到的数据包数。
Send-Q–队列中已发送数据包的数量。
Local Address:Port–本地计算机和端口的地址。
Peer Address:Port–远程计算机和端口的地址。
默认输出一次显示数千行,部分输出在终端上不可见,因此请使用“less”命令进行分页报告。
$ ss | less
2]、查看所有socket连接
查看您的Linux系统上的所有侦听和非侦听套接字连接,运行:
$ ss -a
2、查看所有监听套接字和显示TCP套接字连接
1]、查看所有监听套接字
仅显示Linux系统上的侦听套接字连接,运行:
$ ss -l
2]、显示TCP套接字连接
仅显示Linux系统上的TCP套接字连接,运行:
$ ss -t
默认情况下,“t”选项仅报告“已建立”或“已连接”的tcp套接字,而不报告“LISTENING”的tcp套接字。如果您想一次查看所有内容,请将“-a”选项与“-t”一起使用:
$ ss -ta
显示UDP套接字连接:
$ ss -ua
显示UNIX套接字连接:
$ ss -xa
显示RAW套接字连接:
$ ss -wa
3、仅打印侦听的TCP套接字连接
要仅打印侦听的TCP套接字连接,请运行:
$ ss -ltn
4、列出IPv4和Ipv6套接字连接和使用ss命令打印进程名称和pid
1]、列出IPv4和Ipv6套接字连接
要仅显示IPv4套接字连接,请运行:
$ ss -4
要仅列出IPv4侦听TCP套接字连接,请运行:
$ ss -tl4
对于IPv6,运行:
$ ss -6
$ ss -tl6
2]、使用ss命令打印进程名称和pid
要列出与网络连接关联的进程名称和pid,请运行以下命令,您需要以sudo特权运行此命令以查看所有进程名称和关联的pid:
$ sudo ss -ltp
5、显示套接字连接的计时器信息和打印摘要统计
1]、显示套接字连接的计时器信息
要显示套接字连接有效的时间,请运行:
$ ss -tn -o
2]、打印摘要统计
要查看所有套接字连接的总体摘要,请运行以下命令。它以表格格式打印结果,其中包括TCP和UDP、IPv4和IPv6套接字连接的数量:
$ ss -s
6、查看套接字连接的扩展输出和显示套接字连接的内存使用情况
1]、查看套接字连接的扩展输出
要查看套接字连接的扩展输出,请运行以下命令。扩展的输出将显示套接字的uid和套接字的inode编号:
$ ss -lte
2]、显示套接字连接的内存使用情况
要查看套接字连接消耗了多少内存,请运行:
$ ss -ltm
7、使用ss命令过滤连接
ss命令允许进行高级筛选,该高级筛选可用于筛选特定的连接或统计信息或端口或地址或服务等。
1]、按套接字状态过滤套接字连接
语法:ss [option] [state] [name of the socet state]
要显示所有处于“侦听”状态的tcp套接字,请运行:
$ ss -lt state established
另一个常见状态可以是:listening、closed、syn-sent、syn-recv、fin-wait-1、time-wait、close-wait、connected、synchronized。
2]、按端口号过滤套接字连接
语法:
ss [option] dport = :[port number]
ss [option] sport = :[port number]
ss [option] '( dport = :[port number] or sport = :[port number] )'
要根据端口号过滤套接字,请运行以下命令。例如,要过滤ssh服务,可以根据需要运行以下命令:
$ ss -at dport = :22
$ ss -lt sport = :22
$ ss -at dst :22
$ ss -at src :22
$ ss -at '( dport = :22 or sport = :22 )'
示例截图如下:
要一次过滤多个端口,请运行:
$ ss -nt '( dst :443 or dst :22 )'
3]、按服务名称过滤套接字连接
同样,您可以根据服务名称过滤套接字连接,然后运行。
$ ss -at dport = :ssh
$ ss -lt sport = :ssh
$ ss -at dst :https
$ ss -at src :ssh
$ ss -at '( dport = :ssh or sport = :ssh )'
$ ss -at '( dst :https or dst :ssh )'
$ ss -at '( dst :https or src :ssh )'
$ ss -at '( src :smtp or src :ssh )'
示例截图如下:
4]、按IP地址过滤套接字连接
要列出到特定目标IP地址的连接,请运行:
语法:ss [option] dst [IP Address]
例如,要查看建立到特定IP地址的连接的列表,请运行:
$ ss -at dst 192.168.43.40
最后,如果要浏览本文中没有的其他任何选项,请访问ss命令手册页,只需要运行以下命令即可:
$ man ss
或者:
$ ss --help
相关主题