ss(Socket Statistics) - another utility to investigate sockets(研究套接字的另一个实用程序,原先的是netstat)

ss用于转储套接字统计信息。它允许显示类似于netstat的信息。它可以显示更多的TCP和状态信息

工具。

语法格式:

ss [options] [ FILTER ]

[options]

  • -n --numeric:不解析服务名称
  • -r --resolve:解析服务名称
  • -a --all:显示所有套接字
  • -l --listen:显示监听状态的套接字
  • -o --option:显示计时器信息
  • -p --processes:显示进程
  • -4 --ipv4:显示ipv4相关信息
  • -6 --ipv6:显示ipv6相关信息
  • -s --summary:显示socket概况
  • -t --tcp:显示tcp套接字
  • -u --udp:显示udp套接字
  • -d --dccp:显示dccp套接字
  • -w --raw:显示raw套接字
  • -x --unix:显示unix套接字

state-filter(状态过滤):

状态过滤器允许构造任意一组要匹配的状态。

格式:

ss [option] stat [state-filter] [ EXPRESSION ]

[state-filter]:

所有标准的tcp状态:established,syn-sent,syn-recv,fin-wait-1,fin-wait-2,time-wait,closed,close-wait,last-ack,listen,closing。每个状态什么意思,自己了解tcp相关信息。

  • all :所有状态
  • connected :所有状态,除了listenclosed
  • synchronized :所有的connected,除了syn-sent
  • bucket :显示状态为maintained as minisockets,如:time-wait和syn-recv.
  • big :和bucket相反

[ EXPRESSION ]

  • dport :目标端口
  • sport :源端口

    其它参考官方文档

示例一:

[root@node1 ~]# ss -n state all '( sport = :ssh )'  #查看对ssh端口的所有状态
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
tcp LISTEN 0 128 *:22 *:*
tcp ESTAB 0 0 192.168.2.88:22 192.168.2.230:24746
tcp ESTAB 0 0 192.168.2.88:22 192.168.2.55:54205
tcp LISTEN 0 128 :::22 :::* [root@node1 ~]# ss -n state connected '( sport = :ssh )' #查看ssh端口的connect状态信息 ,其实这里加个 | wc -l 就能查看有多个个connected了。
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
tcp ESTAB 0 0 192.168.2.88:22 192.168.2.230:24746
tcp ESTAB 0 0 192.168.2.88:22 192.168.2.55:54205 [root@node1 ~]$ ss -n state connected '( sport = :443 )'| wc -l #查看web服务器当前有多少个连接状态
435 [root@node1 ~]# ss -n state connected '( sport = :ssh )' dst 192.168.2.55 #查看ssh connect状态,并且目标地址是192.168.2.55的信息
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
tcp ESTAB 0 0 192.168.2.88:22 192.168.2.55:54205

这里的sportdst都和标准的理解中的意思完全相反了。源端口变成本机的目标端口,只要记住是反转的,即可。

示例二:

~]$ netstat -an|grep 8081|awk '{count[$6]++} END{for (i in count) print(i,count[i])}'
TIME_WAIT 41
ESTABLISHED 27
LISTEN 1 ~]$ ss -n state established '( sport = :8081 )' | wc -l #查看单个连接属性有多少个
27 ~]$ ss -an | grep 8081|awk '{count[$1]++} END{for (i in count) print(i,count[i])}'
...

示例三:

~]# ss -tanlp     #常用命令组合
users:(("python3.5",pid=10052,fd=43))
LISTEN 0 128 *:22 *:* users:(("sshd",pid=4125,fd=3))
LISTEN 0 128 *:8888 *:* users:(("jupyter-noteboo",pid=5375,fd=4))
LISTEN 0 128 :::22 :::* users:(("sshd",pid=4125,fd=4))
LISTEN 0 128 ::1:631 :::* users:(("cupsd",pid=4122,fd=11))
LISTEN 0 100 ::1:25 :::* users:(("master",pid=4222,fd=14))
...

比较netstatss哪个运行速度更快,具体原理可自行google,但实验可以得到哪个命令更快。

~]$ time netstat -ant | grep EST | wc -l
408 real 0m0.111s
user 0m0.007s
sys 0m0.098s
~]$ time ss -ant state established | wc -l
423 real 0m0.022s
user 0m0.006s
sys 0m0.018s

ss-套接字监控工具的更多相关文章

  1. Linux 命令 - ss: 查看套接字统计信息

    命令格式 ss [options] [ FILTER ] 命令参数 -h, --help 显示帮助信息. -V, --version 显示版本信息. -n, --numeric 不解析服务名称. -r ...

  2. linux netlink套接字实现相似ss命令 ,统计套接字以及TCP信息

    參考了 ss的源码 以及 netlink相关资料:http://blog.csdn.net/scdxmoe/article/details/27711205 实现结果为: gcc netlink_di ...

  3. ss命令用来显示处于活动状态的套接字信息。

    ss命令用来显示处于活动状态的套接字信息.ss命令可以用来获取socket统计信息,它可以显示和netstat类似的内容.但ss的优势在于它能够显示更多更详细的有关TCP和连接状态的信息,而且比net ...

  4. 使用TCP/IP的套接字(Socket)进行通信

    http://www.cnblogs.com/mengdd/archive/2013/03/10/2952616.html 使用TCP/IP的套接字(Socket)进行通信 套接字Socket的引入 ...

  5. 套接字编程相关函数(2:TCP套接字编程相关函数)

    本文摘录自<UNIX网络编程 卷1>. 基本套接字函数 socket函数 为了执行网络I/O,一个进程必须做的第一件事就是调用socket函数,指定期望的通信协议类型.其定义如下: #in ...

  6. Day9 基于TCP的套接字和基于UDP的套接字

    服务端: ss=socket() #创建服务器套接字 ss.bind() #把地址绑定到套接字 ss.listen() #监听套接字, inf_loop: #服务器无限循环 cs=ss.accept( ...

  7. python套接字编程基础

    python套接字编程 目录 socket是什么 套接字的工作流程 基于tcp的套接字 基于udp的套接字 socket是什么 客户端/服务器架构(C/S架构) 服务端:提供服务的一端 客户端:请求服 ...

  8. python之udp协议的套接字

    udp是无链接的,先启动哪一端都不会报错 udp服务端 1 ss = socket() #创建一个服务器的套接字 2 ss.bind() #绑定服务器套接字 3 inf_loop: #服务器无限循环 ...

  9. Python Web学习笔记之socket套接字

    套接字是为特定网络协议(例如TCP/IP,ICMP/IP,UDP/IP等)套件对上的网络应用程序提供者提供当前可移植标准的对象.它们允许程序接受并进行连接,如发送和接受数据.为了建立通信通道,网络通信 ...

  10. day29 python 套接字socket TCP udp 形式发送信息的区别

    我们经常把socket翻译为套接字,socket是在应用层和传输层之间的一个抽象层,它把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用已实现进程在网络中通信. socket起源于UNIX,在 ...

随机推荐

  1. 深入理解JVM虚拟机

    JVM平台上还可以运行其他语言,运行的是Class字节码.只要能翻译成Class的语言就OK了.挺强大的. JVM厂商很多 垃圾收集器.收集算法 JVM检测工具 关于类的加载: Java代码中,类型( ...

  2. openvswitch2.11.0修改源码后重新编译(2)

    一:前提 已经正常安装了SDN环境(mininet和openswitch2.11.0和Ryu) 使用前面教程安装环境SDN实验---使用git安装Mininet (一)测试ovs是否正常使用 1.ry ...

  3. kafka中的配额管理(限速)机制

    kafka支持配额管理,从而可以对Producer和Consumer的produce&fetch操作进行流量限制,防止个别业务压爆服务器.本文主要介绍如何使用kafka的配额管理功能. 1 K ...

  4. Datalogic 雕刻机

    选型需要考虑: 1. 材料 2. 材质 3. 内容 4. 范围 选择镜头 5. 厚度 6. 效率 7. 效果 脚本代码: // COM 串口设置 const N_COM = "COM2&qu ...

  5. Git 初始仓库

    配置好环境后,通常有两种方式使用git,一种从git仓库上克隆,进行操作,一种是在本地创建并初始仓库,进行操作.工作中前者比较多见. 下面演示如何在本地创建仓库. 1.新建一个目录 # mkdir t ...

  6. PHP匹配中文,匹配车牌号

    /** * 车牌号 * 字母全部大写 * @param $str * @return string */ public static function checkCar($str) { $patter ...

  7. mybatis-3.5.2增删查改

    这玩意没啥技术含量,只不过长时间不用,就显得生疏了.正好今天想读取一个文件写入数据库,平时都是集成环境,都碰不到这些基础东西,看来还是需要时常给自己找活干. 首先建立一个maven工程. next n ...

  8. 微信JS从1.0.0升级到1.1.2的一个坑

    因为1.0.0不支持电脑端日期Picker滚动,升级成了1.1.2,结果发现日期选择不起作用了经过跟踪发现 通过控制台查看 resut[1].toString()居然是number类型,修改代码为() ...

  9. 洛谷P1434滑雪讲解

    题源:[戳这里] 洛谷博客链接:[戳这里] 我觉得这道题主要方法应该有两种: 动态规划 搜索 下面会分别对这两种方法进行简述 一,动态规划法首先的想法是用L(i,j)表示从点(i,j)出发能到达的最长 ...

  10. Django框架(十)--ORM多对多关联关系三种创建方式、form组件

    多对多的三种创建方式 1.全自动(就是平常我们创建表多对多关系的方式) class Book(models.Model): title = models.CharField(max_length=32 ...