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 比。

  

每天一个linux命令(44)--ss命令的更多相关文章

  1. Linux系统使用ss命令查看端口状态

    Linux系统使用ss命令查看端口状态 目录 1.可用工具 2.ss帮助 2.1 选项分类说明 2.2 过滤选项family 2.3 过滤选项state 2.4 状态之间的关系 3.ss的使用 3.1 ...

  2. linux常用命令:ss 命令

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

  3. 网络模型、IP命令、SS命令介绍

    1. 分层对应关系 OSI七层模型和TCP/IP五层模型都属于TCP/IP协议栈,而TCP/IP协议栈只有两种传输层协议:TCP.UDP,所以对于Telnet.FTP这些协议,建议称之为承载在TCP之 ...

  4. Linux命令:ss命令

    ss功能:用来显示套接字信息的,类似于netstat,可以显示更多的信息,用于替代netstat. ss常用选项 ss -t:tcp协议的连接 -u:udp协议的链接 -w:裸套接字相关 -x:uni ...

  5. netstat 命令 与 ss 命令

    http://www.cnblogs.com/peida/archive/2013/03/11/2953420.html http://www.ttlsa.com/linux-command/ss-r ...

  6. Linux命令学习(22):ss命令

    版权声明 更新:2017-05-20 博主:LuckyAlan 联系:liuwenvip163@163.com 声明:吃水不忘挖井人,转载请注明出处! 1 文章介绍 本文介绍了Linux下面的ss命令 ...

  7. SS命令和Netstat命令比较

    在早期运维工作中,查看服务器连接数一般都会用netstat命令.其实,有一个命令比netstat更高效,那就是ss(Socket Statistics)命令!ss命令可以用来获取socket统计信息, ...

  8. [转]Linux下网络常用命令和工具

    转自:http://int32bit.me/2016/05/04/Linux%E5%B8%B8%E7%94%A8%E7%BD%91%E7%BB%9C%E5%B7%A5%E5%85%B7%E6%80%B ...

  9. Docker 容器中无ss命令解决方法

    在早期运维工作中,查看服务器连接数一般都会用netstat命令.其实,有一个命令比netstat更高效,那就是ss(Socket Statistics)命令!ss命令可以用来获取socket统计信息, ...

随机推荐

  1. Nodejs之模板ejs

    ejs使用说明及介绍. 1.创建ejs项目 express -e test  //创建模板为ejs的项目,默认为jade. 2.使用 app.js中添加 var ejs = require('ejs' ...

  2. JS内存泄漏排查方法——Chrome Profiles

    一.概述 Google Chrome浏览器提供了非常强大的JS调试工具,Heap Profiling便是其中一个.Heap Profiling可以记录当前的堆内存(heap)快照,并生成对象的描述文件 ...

  3. fastreport.net cdoe 自己的代码

      //初始             Report report1 = new Report();             report1.Clear();             string Re ...

  4. Dictionary使用(转)

    1.要使用Dictionary集合,需要导入C#泛型命名空间 System.Collections.Generic(程序集:mscorlib)2.描述 1).从一组键(Key)到一组值(Value)的 ...

  5. 云脉推出表格识别API接口可以自助接入

    针对如今市场上对于海量票据信息的录入需求,近期厦门云脉技术有限公司推出票据识别相关的产品与服务,更是在云脉OCR SDK开发者平台上上线表格识别API接口,供广大开发者和集成商自助接入.为了降低财务系 ...

  6. 怎样在iis中发布asp.net网站

    以windows server2003.vs2008和sql servber2005为例.将开发完成的asp.net网站发布,将发布包放在windows server2003服务器的文件夹下.将web ...

  7. HMX-Server C++ 分步式服务器大版本更新了(有源码)

    原文地址:http://www.cnblogs.com/hellohuang/p/6294763.html # HMX-ServerHMX-Server分步式服务器框架,主要分为网关.登录.世界.场景 ...

  8. Swiper.js使用遇到的问题总结onSlideChangeEnd回调偶尔触发,偶尔不触发等;

    Swiper 是一个开源免费的移动触摸插件. 在使用中遇到这样一个问题,记录一下. page 间切换效果 使用 fade 的时候,如果每个页面的大小不一样, 比如第一个页面全屏, 第二个页面比第一个小 ...

  9. 百度人脸识别api及face++人脸识别api测试(python)

    一.百度人脸识别服务 1.官方网址:http://apistore.baidu.com/apiworks/servicedetail/464.html 2.提供的接口包括: 2.1 多人脸比对:请求多 ...

  10. JavaScript基础:创建对象

    先来看两种简单的对象创建方式: 1.Object构造函数方法 var person = new Object(); person.name = "Nicholas"; person ...