2

Linux之ss命令

 2 years ago
source link: https://blog.51cto.com/u_12214037/5090924
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

Linux之ss命令

原创

入门小站 2022-03-10 11:58:45 ©著作权

文章标签 Linux 文章分类 Linux 系统/运维 阅读数432

【Linux常用命令速查手册】关注【入门小站】,后台回复 「1001」 自取。

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

Linux之ss命令_Linux

显示UDP链接

> ss -a -u

Linux之ss命令_Linux_02

显示Sokets摘要

> ss -s

Linux之ss命令_Linux_03

列出当前的established, closed, orphaned and waiting TCP sockets

显示本地打开的所有端口

> ss -ln

Linux之ss命令_Linux_04

查看进程使用的socket

> ss -pl

Linux之ss命令_Linux_05

找出打开套接字/端口应用程序

> ss -nlp | grep 3306

Linux之ss命令_Linux_06

显示所有状态为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/linux-ss.html
微信公众号:入门小站

【Linux常用命令速查手册】关注【入门小站】,后台回复 「1001」 自取。

Linux之ss命令_Linux_07


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK