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 的有关统计信息
{all|inet|tcp|udp|raw|unix|packet|netlink}[,QUERY]
> ss -a -t
> ss -a -u
> ss -s
列出当前的established, closed, orphaned and waiting TCP sockets
> ss -ln
> ss -pl
> ss -nlp | grep 3306
> ss -o state established '( dport = :smtp or sport = :smtp )'
> ss -o state established '( dport = :http or sport = :http )'
> ss -4 state FILTER-NAME-HERE
> ss -6 state FILTER-NAME-HERE
FILTER-NAME-HERE可以是下面的任何一个
> 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 : 大于端口号
> 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/linux-ss.html
微信公众号:入门小站
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。