文档章节

Linux网络状态工具ss命令使用详解

kirsmile
 kirsmile
发布于 2017/06/18 13:45
字数 1351
阅读 2
收藏 0


ss命令用于显示socket状态. 他可以显示PACKET sockets, TCP sockets, UDP sockets, DCCP sockets, RAW sockets, Unix domain sockets等等统计. 它比其他工具展示等多tcpstate信息. 它是一个非常实用、快速、有效的跟踪IP连接和sockets的新工具.SS命令可以提供如下信息:

§ 所有的TCP sockets

§ 所有的UDP sockets

§ 所有ssh/ftp/ttp/https持久连接

§ 所有连接到Xserver的本地进程

§ 使用state(例如:connected, synchronized, SYN-RECV, SYN-SENT,TIME-WAIT)、地址、端口过滤

§ 所有的state FIN-WAIT-1 tcpsocket连接以及更多

很多流行的Linux发行版都支持ss以及很多监控工具使用ss命令.熟悉这个工具有助于您更好的发现与解决系统性能问题.本人强烈建议使用ss命令替代netstat部分命令,例如netsat -ant/lnt.

展示他之前来做个对比,统计服务器并发连接数

1

2

3

4

5

6

7

8

9

10

11

12

13

 netstat

# time netstat -ant | grep EST | wc -l

3100

 

real 0m12.960s

user 0m0.334s

sys 0m12.561s

# time ss -o state established | wc -l

3204

 

real 0m0.030s

user 0m0.005s

sys 0m0.026s

结果很明显ss统计并发连接数效率完败netstat,ss能搞定的情况下, 你还会在选择netstat, 还在犹豫吗, 看以下例子,或者跳转到帮助页面.

常用ss命令:

1

2

3

4

5

6

7

8

ss -l 显示本地打开的所有端口

ss -pl 显示每个进程具体打开的socket

ss -t -a 显示所有tcp socket

ss -u -a 显示所有的UDP Socekt

ss -o state established '( dport = :smtp or sport = :smtp )' 显示所有已建立的SMTP连接

ss -o state established '( dport = :http or sport = :http )' 显示所有已建立的HTTP连接

ss -x src /tmp/.X11-unix/* 找出所有连接X服务器的进程

ss -s 列出当前socket详细信息:

显示sockets简要信息
列出当前已经连接,关闭,等待的tcp连接

1

2

3

4

5

6

7

8

9

10

11

# ss -s

Total: 3519 (kernel 3691)

TCP: 26557 (estab 3163, closed 23182, orphaned 194, synrecv 0, timewait 23182/0), ports 1452

 

Transport Total IP IPv6

* 3691 - -

RAW 2 2 0

UDP 10 7 3

TCP 3375 3368 7

INET 3387 3377 10

FRAG 0 0 0

列出当前监听端口

 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

# ss -l

Recv-Q Send-Q Local Address:Port Peer Address:Port

0 10 :::5989 :::*

0 5 *:rsync *:*

0 128 :::sunrpc :::*

0 128 *:sunrpc *:*

0 511 *:http *:*

0 128 :::ssh :::*

0 128 *:ssh *:*

0 128 :::35766 :::*

0 128 127.0.0.1:ipp *:*

0 128 ::1:ipp :::*

0 100 ::1:smtp :::*

0 100 127.0.0.1:smtp *:*

0 511 *:https *:*

0 100 :::1311 :::*

0 5 *:5666 *:*

0 128 *:3044 *:*

ss列出每个进程名及其监听的端口

1

# ss -pl

ss列所有的tcp sockets

1

# ss -t -a

ss列出所有udp sockets

1

# ss -u -a

ss列出所有http连接中的连接

1

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

·以上包含对外提供的80,以及访问外部的80
·用以上命令完美的替代netstat获取http并发连接数,监控中常用到

ss列出本地哪个进程连接到x server

1

# ss -x src /tmp/.X11-unix/*

ss列出处在FIN-WAIT-1状态的httphttps连接

1

# ss -o state fin-wait-1 '( sport = :http or sport = :https )'

ss常用的state状态

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

established

syn-sent

syn-recv

fin-wait-1

fin-wait-2

time-wait

closed

close-wait

last-ack

listen

closing

all : All of the above states

connected : All the states except for listen and closed

synchronized : All the connected states except for syn-sent

bucket : Show states, which are maintained as minisockets, i.e. time-wait and syn-recv.

big : Opposite to bucket state.

ss使用IP地址筛选

1

2

3

4

5

6

7

8

9

10

ss src ADDRESS_PATTERN

src:表示来源

ADDRESS_PATTERN:表示地址规则

 

如下:

ss src 120.33.31.1 # 列出来之20.33.31.1的连接

 

# 列出来至120.33.31.1,80端口的连接

ss src 120.33.31.1:http

ss src 120.33.31.1:80

ss使用端口筛选

1

2

3

4

ss dport OP PORT

OP:是运算符

PORT:表示端口

dport:表示过滤目标端口、相反的有sport

OP运算符如下:

1

2

3

4

<= or le : 小于等于 >= or ge : 大于等于

== or eq : 等于

!= or ne : 不等于端口

< or lt : 小于这个端口 > or gt : 大于端口

OP实例

1

2

3

4

5

6

7

8

9

10

ss sport = :http 也可以是 ss sport = :80

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

为什么ssnetstat快:
netstat是遍历/proc下面每个PID目录,ss直接读/proc/net下面的统计信息。所以ss执行的时候消耗资源以及消耗的时间都比netstat少很多

ss命令帮助

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

# ss -h

Usage: ss [ OPTIONS ]

       ss [ OPTIONS ] [ FILTER ]

   -h, --help           this message

   -V, --version        output version information

   -n, --numeric        don't resolve service names

   -r, --resolve       resolve host names

   -a, --all            display all sockets

   -l, --listening      display listening sockets

   -o, --options       show timer information

   -e, --extended      show detailed socket information

   -m, --memory        show socket memory usage

   -p, --processes      show process using socket

   -i, --info           show internal TCP information

   -s, --summary        show socket usage summary

 

   -4, --ipv4          display only IP version 4 sockets

   -6, --ipv6          display only IP version 6 sockets

   -0, --packet display PACKET sockets

   -t, --tcp            display only TCP sockets

   -u, --udp            display only UDP sockets

   -d, --dccp           display only DCCP sockets

   -w, --raw            display only RAW sockets

   -x, --unix           display only Unix domain sockets

   -f, --family=FAMILY display sockets of type FAMILY

 

   -A, --query=QUERY, --socket=QUERY

       QUERY := {all|inet|tcp|udp|raw|unix|packet|netlink}[,QUERY]

 

   -D, --diag=FILE      Dump raw information about TCP sockets to FILE

   -F, --filter=FILE   read filter information from FILE

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

 

本文转载自:http://blog.csdn.net/qq_34857250/article/details/54882545

kirsmile
粉丝 0
博文 25
码字总数 6488
作品 0
私信 提问
Linux网络状态工具ss命令使用详解

ss命令用于显示socket状态. 他可以显示PACKET sockets, TCP sockets, UDP sockets, DCCP sockets, RAW sockets, Unix domain sockets等等统计. 它比其他工具展示等多tcp和state信息. 它是一个...

老汉-憨憨
2014/12/08
285
0
如何检查 Linux 中的开放端口列表?

最近,我们就同一主题写了两篇文章。这些文章内容帮助你如何检查远程服务器中给定的端口是否打开。 如果你想 检查远程 Linux 系统上的端口是否打开 请点击链接浏览。如果你想 检查多个远程 ...

作者: Magesh Maruthamuthu
04/17
0
0
Linux中检查本地系统上的开放端口列表的方法

在 Linux 中很少有用于此目的的实用程序。然而,我提供了四个最重要的 Linux 命令来检查这一点。 你可以使用以下四个命令来完成这个工作。这些命令是非常出名的并被 Linux 管理员广泛使用。 ...

xiangyunyan
04/29
26
0
Linux 使用ss命令代替 netstat

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

LionelShen
2013/02/22
8.8K
0
10.6 监控io性能 10.7 free命令 10.8 ps命令 10.9 查看网络状态 10.10 linux下抓包 linux下抓包

10.6 监控io性能 iostat命令 >iostat命令被用于监视系统输入输出设备和CPU的使用情况。它的特点是汇报磁盘活动统计情况,同时也会汇报出CPU使用情况。同vmstat一样,iostat也有一个弱点,就是...

Champin
2017/11/28
59
0

没有更多内容

加载失败,请刷新页面

加载更多

iOS苹果应用IPA一键签名工具及重签教程

开心签名工具,是一款跨平台ios签名和重签名工具。 同时支持在windows、linux、mac运行,数据同步,方便使用及管理! 开心重签名工具官网 功能特点 1、支持图形界面及命令行重签(部署到服务...

tintong
6分钟前
2
0
2.4G有源卡核心芯片供应商

有源2.4G RFID的防盗标签,在与无源标签相比较,通信距离远,通信时效高。我司的SI24R2E这颗芯片专门为2.4G有源标签而设计,具有低功耗,发送距离远,厂商设计简单等优势;广泛应用于现在城市...

文刀石
12分钟前
2
0
设置Ubuntu16.04启动为命令行界面

1. 修改/etc/default/grub文件,将GRUB_CMDLINE_LINUX_DEFAULT设置成”quiet splash 3” 2. 使用命令update-grub使得在/boot下重新生成GRUB2配置文件。 3. 重启...

JosiahMg
12分钟前
2
0
C++基础知识点

计算机语言 计算机不能理解高级语言,只能理解机器语言,必须要将高级语言翻译成机器语言,翻译的方式有两种,一种是编译,一种是解释 解释型语言,在运行程序时进行翻译,每个语句在执行时逐...

大瑞清_liurq
19分钟前
2
0
EFCore 多条数据更新不能同时savechanges()的解决方法

1 在ModelContext定义下增加var transaction = ctx.Database.BeginTransaction(); 1.2 在最后一个SaveChanges()后增加transaction.Commit(); 3 在finally的if (sMsgCode != "")分支中增加tra......

_Somuns
22分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部