ss 是 Socket Statistics 的缩写。顾名思义,ss 命令能够用来获取 socket 统计信息,它能够显示和 netstat 相似的内容。但 ss 的劣势在于它可能显示更多更具体的无关 TCP 和连贯状态的信息,而且比 netstat 更疾速更高效。
当服务器的 socket 连贯数量变得十分大时,无论是应用 netstat 命令还是间接
cat /proc/net/tcp
,执行速度都会很慢。ss 快的秘诀在于,它利用到了 TCP 协定栈中 tcp_diag。tcp_diag 是一个用于剖析统计的模块,能够取得 Linux 内核中第一手的信息,这就确保了 ss 的快捷高效。当然,如果你的零碎中没有 tcp_diag,ss 也能够失常运行,只是效率会变得稍慢。(但依然比 netstat 要快。)
ss 命令用于显示 socket 状态. 他能够显示 PACKET sockets, TCP sockets, UDP sockets, DCCP sockets, RAW sockets, Unix domain sockets 等等统计. 它比其余工具展现等多 tcp 和 state 信息. 它是一个十分实用、疾速、无效的跟踪 IP 连贯和 sockets 的新工具.SS 命令能够提供如下信息
命令格局
ss [参数]
ss [参数] [过滤
命令性能
比 netstat 好用的 socket 统计信息,iproute2 包附带的另一个工具,容许你查问 socket 的无关统计信息
命令参数
- -h, –help 帮忙信息
- -V, –version 程序版本信息
- -n, –numeric 不解析服务名称
- -r, –resolve 解析主机名
- -a, –all 显示所有套接字(sockets)
- -l, –listening 显示监听状态的套接字(sockets)
- -o, –options 显示计时器信息
- -e, –extended 显示具体的套接字(sockets)信息
- -m, –memory 显示套接字(socket)的内存应用状况
- -p, –processes 显示应用套接字(socket)的过程
- -i, –info 显示 TCP 外部信息
- -s, –summary 显示套接字(socket)应用详情
- -4, –ipv4 仅显示 IPv4 的套接字(sockets)
- -6, –ipv6 仅显示 IPv6 的套接字(sockets)
- -0, –packet 显示 PACKET 套接字(socket)
- -t, –tcp 仅显示 TCP 套接字(sockets)
- -u, –udp 仅显示 UCP 套接字(sockets)
- -d, –dccp 仅显示 DCCP 套接字(sockets)
- -w, –raw 仅显示 RAW 套接字(sockets)
- -x, –unix 仅显示 Unix 套接字(sockets)
- -f, –family=FAMILY 显示 FAMILY 类型的套接字(sockets),FAMILY 可选,反对 unix, inet, inet6, link, netlink
- -A, –query=QUERY, –socket=QUERY QUERY :=
{all|inet|tcp|udp|raw|unix|packet|netlink}[,QUERY]
- -D, –diag=FILE 将原始 TCP 套接字(sockets)信息转储到文件
- -F, –filter=FILE 从文件中读取过滤器信息 FILTER := [state TCP-STATE] [EXPRESSION]
显示 TCP 连贯
> ss -a -t
显示 UDP 链接
> ss -a -u
显示 Sokets 摘要
> ss -s
列出以后的 established, closed, orphaned and waiting TCP sockets
显示本地关上的所有端口
> ss -ln
查看过程应用的 socket
> ss -pl
找出关上套接字 / 端口应用程序
> ss -nlp | grep 3306
显示所有状态为 established 的 SMTP 连贯
> ss -o state established '(dport = :smtp or sport = :smtp)'
显示所有状态为 Established 的 HTTP 连贯
> ss -o state established '(dport = :http or sport = :http)'
用 TCP 状态过滤 Sockets
> ss -4 state FILTER-NAME-HERE
> ss -6 state FILTER-NAME-HERE
FILTER-NAME-HERE 能够是上面的任何一个
- listen:侦听来自远方的 TCP 端口的连贯申请
- syn-sent:再发送连贯申请后期待匹配的连贯申请(客户端)
- syn-recv:再收到和发送一个连贯申请后期待对方对连贯申请的确认(服务器)
- established:代表一个关上的连贯
- fin-wait-1:期待近程 TCP 连贯中断请求,或先前的连贯中断请求的确认
- fin-wait-2:从近程 TCP 期待连贯中断请求
- close-wait:期待从本地用户发来的连贯中断请求
- closing:期待近程 TCP 对连贯中断的确认
- last-ack:期待原来的发向近程 TCP 的连贯中断请求的确认
- time-wait:期待足够的工夫以确保近程 TCP 接管到连贯中断请求的确认
- closed:没有任何连贯状态
- all : 所有以上状态
- connected : 除了 listen and closed 的所有状态
- synchronized : 所有已连贯的状态除了 syn-sent
- bucket : 显示状态为 maintained as minisockets, 如:time-wait 和 syn-recv.
- big : 和 bucket 相同.
匹配近程地址和端口号
> ss dst ADDRESS_PATTERN
> ss dst 192.168.1.1
> ss dst 192.168.21.1:http
> ss dst 192.168.21.1:smtp
> ss dst 192.168.21.1:443
将本地或者近程端口和一个数比拟
> ss sport = :http
> ss dport = :http
> ss dport \> :1024
> ss sport \> :1024
> ss sport \< :32000
> ss sport eq :22
> ss dport != :22
> ss state connected sport = :http
> ss \(sport = :http or sport = :https \)
> ss -o state fin-wait-1 \(sport = :http or sport = :https \) dst 192.168.1/24
ss dport OP PORT 近程端口和一个数比拟;ss sport OP PORT 本地端口和一个数比拟。
OP
能够代表以下任意一个:<=
or le : 小于或等于端口号>=
or ge : 大于或等于端口号==
or eq : 等于端口号!=
or ne : 不等于端口号<
or gt : 小于端口号>
or lt : 大于端口号
ss 和 netstat 效率比照
- time netstat -at
- time ss
> time netstat -at
real 0m10.849s
user 0m0.013s
sys 0m0.008s
> time ss
real 0m0.008s
user 0m0.004s
sys 0m0.004s
用 time 命令别离获取通过 netstat 和 ss 命令获取程序和概要占用资源所应用的工夫。在服务器连接数比拟多的时候,netstat 的效率齐全没法和 ss 比。
原文链接:https://rumenz.com/rumenbiji/…
微信公众号: 入门小站