Linux ss命令个人学习记录

   在Linux的维护中经常我们需要查看我们当前系统的socket的状态情况,一般情况下我们会使用我们常用的netstat命令:去查看当前系统维持的连接情况:

wKioL1TJ0SzhlC3ZAAVhb5A15w8190.jpg

当然有时候我们的系统已经维持了很多的连接,此时我们的系统将会变得缓慢。这是如果我们在使用netstat再去查看我们的socket情况,就非常的慢,同事加大我们的系统开销。

这是我们可以使用ss命令,迅速的查看我们当前的socket的情况。

   ss 是socket statistic的缩写,它使用的tcp协议栈中的一个分析统计模块。可以迅速的获取Linux内核的相关信息。我们可以使用 time  命令来监控ss 和netstat 命令的执行时间久可以明了。

ss  -s 是现实当前所有的socket的统计情况。

下面是ss命令的一下参数情况

-h, --help帮助信息

-V, --version程序版本信息

-n, --numeric不解析服务名称 如果使用此蚕食回吧相应的服务名称转化成对应的Port

-r, --resolve        解析主机名

-a, --all显示所有套接字(sockets)包括tcp  udp等。

-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 ]

例如命令:  

[root@blank ec2-user]# ss -s

Total: 125 (kernel 200)

TCP:   15 (estab 1, closed 0, orphaned 0, synrecv 0, timewait 0/0), ports 0


Transport Total     IP        IPv6

*  200       -         -        

RAW  0         0         0        

UDP  14        13        1        

TCP  15        11        4        

INET  29        24        5        

FRAG  0         0         0  

它会显示统计当前的socket的简略情况。

[root@blank ec2-user]# ss -lt   显示本机监听的tcp 协议的socket情况。

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

LISTEN     0      100                               :::llsurfup-http                            :::*       

LISTEN     0      100                                *:llsurfup-http                             *:*       

LISTEN     0      100                               :::llsurfup-https                            :::*       

LISTEN     0      100                                *:llsurfup-https                             *:*       

LISTEN     0      128                        127.0.0.1:cslistener                             *:*       

LISTEN     0      50                                 *:mysql                               *:*       

LISTEN     0      128                               :::memcache                            :::*       

ss命令的强大之处在于能显示一些更详细的tcp状态信息。

[root@blank ec2-user]# ss -tn state established  可以显示当前以及建立连接的tcp情况。

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

0      200                            172.31.22.84:22                          210.74.155.210:19842

所包含的状态信息的过滤字段有一下几种:

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相反

当然我们也可以使用ss命令来匹配 源地址和Port已经目标地址和Port:

[root@blank ec2-user]# ss src 172.31.22.84 -t   src 表示源地址

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

ESTAB      0      200                     172.31.22.84:ssh                    210.74.155.210:19842   

[root@blank ec2-user]# ss src 172.31.22.84:22 -t

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

ESTAB      0      200                     172.31.22.84:ssh                    210.74.155.210:19842 

[root@blank ec2-user]# ss dst 210.74.155.210 -t 匹配目标地址。

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

ESTAB      0      200                     172.31.22.84:ssh                    210.74.155.210:19842   








你可能感兴趣的:(linux,管理)