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/…
微信公众号:入门小站