关于linux:Linux之ss命令

48次阅读

共计 2958 个字符,预计需要花费 8 分钟才能阅读完成。

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

正文完
 0