• 每天一个linux命令(44)--ss命令


      ss 是 socket statistics 的缩写。顾名思义,ss 命令可以用来获取socket 统计信息,它可以显示和netstat 类似的内容。但 ss 的优势在于它能够显示更多更详细的有关TCP和连接状态的信息,而且比netstat更快速更高效。

      当服务器的socket连接数量变得非常大时,无论是使用netstat命令还是 cat  /proc/net/tcp,执行速度都会很慢。可能你不会有切身的感受,但请相信我,当服务器维持的连接达到上万个的时候,使用 netstat 等于浪费生命,而用 ss才是 节省时间。

      天下武功唯快不破。ss快的秘诀在于,他利用了TCP协议栈中 tcp_diag.   tcp_diag 是一个用于分析统计的模块,可以获得Linux 内核中第一手的信息,这就确保了ss的快捷高效。当然,如果你的系统中没有 tcp_diag,ss也可以正常运行,只是效率会变得稍慢。(但仍然比  netstat 要快。)

      1.命令格式:

        ss [参数]

        ss [参数] [过滤]

      2.命令功能:

        ss(socket statistics 缩写),该命令可以用来获取  socket 的统计信息,此命令输出的结果类似于 netstat 输出的内容,但它能显示更多更详细的 TCP 连接状态的信息,且比 netstat 更快速高效。它使用了 TCP 协议栈中 tcp_diag(是一个用于分析统计的模块),能直接从获得第一手内核信息,这就使得 ss 命令快捷高效。在没有 tcp_diag,ss 也可以正常运行。

      3.命令参数:

      -n  --numeric不解析服务名称

      -r  --resolve 解析主机名

      -l  --listening 显示监听状态的套接字(sockets)

      -a  --all显示所有套接字

      -o  --options  显示计时器信息

      -e  --extended  显示详细的套接字(socket)的内存使用情况

      -p  --processed  显示使用套接字的进程

      -i  --info   显示 tcp 内部信息

      -s  --summary  显示套接字(socket)使用概况

      -4  --IPv4  仅显示 IPv4的套接字

      -6

      -0(零)  --packet  显示 PACKET 套接字

      -t  --tcp  仅显示 TCP 套接字

      -u  --udp  仅显示  UDP套接字

      -d  --dccp  仅显示 DCCP 套接字

      -w  --raw  仅显示  RAW 套接字

      -x  --Unix  仅显示 Unix 套接字

      -f  --family=FAMILY  显示 FAMILY 类型的套接字,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 套接字信息转储到文件

      -F  --filter=FILE  从文件中都去过滤信息

            FLITER    :=  [ state  TCP-STATE ] [ EXPRESSION ]

      4使用实例:

      实例1:显示TCP连接

      命令:ss  -t    -a

      实例2:显示 sockets  摘要

      命令:  ss   -s

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

      实例3:

        ss  -l

      实例4:查看进程使用的socket

      命令:

        ss  -pl

      实例5:找出打开套接字/端口应用程序

      命令:

        ss  -lp  |  grep  3306

      实例6:显示所有UDP  sockets

      命令:

        ss   -u  -a

      实例7:显示所有状态为 established  的 SMTP 连接

      命令:

        ss  -o  state  established  `(  dport  =: smtp  or  sport  = : smtp )`

      实例8:显示所有状态为 Established 的 HTTP 连接

      命令:

        ss  -o  state  established  `(dport  =  :http  or  sport  =  :http)`  

      实例9:列举出处于  FIN-WAIT-1 状态的源端口为   80 或者  443, 目标网络为  192.168.1 /24 的所有 tcp 套接字

      命令:  

        ss  -o  state  fin-wait-1  `( sport  =  :http  or  sport  =  :https)`  dst  192.168.1/24

      实例10:用TCP 状态过滤 sockets:

      命令:

        ss  -4  state  FILTER-NAME-HERE

        ss  -6 state  FILTER-NAME-HERE

      FILTER-NAME-HERE 可以代表以下任何一个

      established

      syn-sent

      syn-recv

      fin-wait-1

      fin-wait-2

      time-wait

      closed

      close-wait

      last-ack

      listen

      closing

      all  所有以上状态

      connected   除了listen and closed 的所有状态

      synchronized   所有已连接的状态除了  syn-sent

      bucket  显示状态为 maintained  as  minisockets, 如 time-wait 和 syn-recv.

      big  和bucket 相反

      实例11:匹配远程地址和端口号

      命令:

        ss  dst  ADDERSS_PATTERN

        ss  dst  192.168.1.1

        ss dst 192.168.1.1:8080

      实例12:匹配本地地址和端口号

      命令: 

        ss  src  ADDRESS_PATTERN

        ss  src 192.168.1.1

        ss  src   192.168.1.1:80

      实例13:将本地或者远程端口和一个数比较  

      命令:

        ss  dport  OP  PORT  远程端口和一个数比较; destination  port

        ss  sport  OP  PORT  本地端口和一个数比较; source   port

        OP--OPTION:

        <=  or  le,  >= or ge,  ==  or eq,

        !=  or  ne  <  or gt    >   or   lt

      实例14: ss  和  netstat 效率对比

      命令:

         time  netstat  -at

         time  ss

      用 time 命令分别获取通过netstat 和 ss 命令获取程序占用资源所使用的时间。在服务器连接数比较多的时候,netstat 的效率完全没法和 ss 比。

      

  • 相关阅读:
    python模块整理2-sys模块 分类: python Module 2013-09-13 16:49 563人阅读 评论(0) 收藏
    sys常用模块小探 分类: python Module 2013-09-13 16:42 339人阅读 评论(0) 收藏
    先执行linux的clear清屏命令,再执行其他操作 分类: python 小练习 2013-09-13 11:23 441人阅读 评论(0) 收藏
    MySQL 解决ERROR 1045 (28000): Access deniedfor user datam@localhost (using password: YES)的问题 分类: database 2013-09-12 15:52 402人阅读 评论(0) 收藏
    函数名function是一个数据类型,可以赋值 分类: python基础学习 2013-09-12 11:01 366人阅读 评论(0) 收藏
    解决 mysql error: Failed dependencies: 错误 分类: database 2013-09-11 11:23 772人阅读 评论(0) 收藏
    Java之wait()/sleep()和notify()/notifyAll()
    Java之数据流DataInput(Output)Stream 和 字节数组流 ByteArrayInput(Output) Stream的嵌套
    Eclipse的简易教程
    JAVA中的反射机制
  • 原文地址:https://www.cnblogs.com/aaronax/p/5664719.html
Copyright © 2020-2023  润新知