ss:Socket Statistics:Socket统计。
ss 命令可以获取socket统计信息,它的功能和netstat类似。
ss 也被称为IPC(Inter-Process Communication)套接字统计。这是一个强大的网络管理命令,主要用于获取系统中socket的统计信息,可以帮助系统管理员诊断和排查网络问题,包括检查当前网络连接及端口状态、搜索网络问题、统计网络情况、过滤网络数据等等,从而解决网络问题,节省管理工作量,保证网络安全。
ss命令特性:
- ss 比 netstat 更快速源于在于它能够显示更为详细的 TCP 和 Socket 连接状态的信息。
- 当服务器的 socket 连接数量变得非常大时,无论是使用 netstat 命令还是直接 cat /proc/net/tcp,执行速度都会很慢。
- ss 利用到了 TCP 协议栈中 tcp_diag。tcp_diag 是一个用于分析统计的模块,可以获得 Linux 内核中最新的数据,进而就确保了ss的快速高效。(ss在没有 tcp_diag,ss也可以正常运行)
处理大量socket连接时,比netstat更快更高效。这是因为ss命令利用了TCP协议栈中的tcp_diag模块,这个模块可以获得Linux内核中的第一手信息,因此其性能优于其他工具。
time netstat -at
# real 0m0.023s
# user 0m0.003s
# sys 0m0.007s
time ss -at
# real 0m0.005s
# user 0m0.003s
# sys 0m0.002s
语法:
ss 选项
-t, --tcp #显示TCP 协议 的Sockets
-S, --sctp #显示STCP 的Sockets
-u, --udp #显示UDP 的Sockets
-e, --extended #显示详细的Socket信息
-m, --memory #显示Socket内存使用
-p, --processes #显示Socket 使用进程
-i, --info #显示内部TCP信息
-s, --summary #显示socket使用总数
-n, --numeric #不解析服务名称
-r, --resolve # 解析主机名,把 IP 解释为域名,把端口号解释为协议名称
-a, --all #显示所有Socket
-l, --listening #显示监听的Socket
示例:
1.找出打开套接字/端口应用程序
ss -tnlp | grep 端口号
ss -tunlp | grep 端口号
2.查看监听套接字:监听套接字是系统等待外部连接的地方
ss -l
3.显示所有状态为established的SMTP连接:
ss -o state 'established'
#显示所有处于ESTAB(established)状态的TCP连接
ss -t -a state established