首页 服务器系统 Linux

Linux 使用ss命令查看本机服务运行状态

前言

ss(Socket Statistics,套接字统计):可以显示各类协议、各种状态的套接字信息,从而有效跟踪服务运行状态(如服务是否启动)和服务端与客户端的连接状态。


目录

一、描述

二、命令

三、ss命令返回字段含义

四、总结

五、思维导图


一、描述

ss(Socket Statistics,套接字统计):可以用来获取socket统计信息,它显示的内容和netstat类似。但ss的优势在于它能够显示更多更详细的有关TCP和连接状态的信息被,而且比netstat更快。当服务器的socket连接数量变得非常大时,无论是使用netstat命令还是直接cat /proc/net/tcp,执行速度都会很慢。ss命令利用到了TCP协议栈中tcp_diag。tcp_diag是一个用于分析统计的模块,可以获得Linux内核中第一手的信息,因此ss命令的性能会好很多。


二、命令

1、语法

ss [选项]


2、常用选项

  • [ -a ]:显示所有(侦听中和已建立的)的套接字;
  • [ -u ]:只显示UDP传输协议的套接字;
  • [ -p ]:显示使用套接字的进程信息,包括启动该服务的程序名称、进程号等;
  • [ -e ]:显示详细的套接字信息(包含了以太网的统计信息),此选项可以与-s选项组合使用;
  • [ -n ]:不解析服务名称,以数字方式显示;
  • [ -4 ]:显示IPv4的套接字信息;
  • [ -t ]:只显示TCP传输协议的套接字;
  • [ -l ]:只显示处于侦听状态的套接字;
  • [ -s ]:显示按协议统计信息。默认显示IP、IPv6、ICMP、TCP、TCPv6、UDP和UDPv6的统计信息;
  • [ -m ]:显示套接字的内存使用情况;
  • [ -r ]:将输出信息中的IP解析到主机名后再显示;
  • [ -6 ]:显示IPv6的套接字信息。

3、ss命令的帮助信息

[root@localhost ~]# ss --help
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
   -b, --bpf           show bpf filter socket information
   -E, --events        continually display sockets as they are destroyed
   -Z, --context       display process SELinux security contexts
   -z, --contexts      display process and socket SELinux security contexts
   -N, --net           switch to the specified network namespace name

   -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
   -S, --sctp          display only SCTP 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
       --vsock         display only vsock sockets
   -f, --family=FAMILY display sockets of type FAMILY
       FAMILY := {inet|inet6|link|unix|netlink|vsock|help}

   -K, --kill          forcibly close sockets, display what was closed
   -H, --no-header     Suppress header line

   -A, --query=QUERY, --socket=QUERY
       QUERY := {all|inet|tcp|udp|raw|unix|unix_dgram|unix_stream|unix_seqpacket|packet|netlink|vsock_stream|vsock_dgram}[,QUERY]

   -D, --diag=FILE     Dump raw information about TCP sockets to FILE
   -F, --filter=FILE   read filter information from FILE
       FILTER := [ state STATE-FILTER ] [ EXPRESSION ]
       STATE-FILTER := {all|connected|synchronized|bucket|big|TCP-STATES}
         TCP-STATES := {established|syn-sent|syn-recv|fin-wait-{1,2}|time-wait|closed|close-wait|last-ack|listen|closing}
          connected := {established|syn-sent|syn-recv|fin-wait-{1,2}|time-wait|close-wait|last-ack|closing}
       synchronized := {established|syn-recv|fin-wait-{1,2}|time-wait|close-wait|last-ack|closing}
             bucket := {syn-recv|time-wait}
                big := {established|syn-sent|fin-wait-{1,2}|closed|close-wait|last-ack|listen|closing}


三、ss命令返回字段含义

[root@localhost ~]# ss -atn
State       Recv-Q Send-Q Local Address:Port               Peer Address:Port              
LISTEN      0      128             *:111                         *:*                  
LISTEN      0      5      192.168.122.1:53                          *:*                  
LISTEN      0      128             *:22                          *:*                  
LISTEN      0      128     127.0.0.1:631                         *:*                  
LISTEN      0      100     127.0.0.1:25                          *:*                  
LISTEN      0      128     127.0.0.1:6010                        *:*                  
ESTAB       0      36     192.168.28.200:22                 192.168.28.1:51342              
LISTEN      0      128            :::111                        :::*                  
LISTEN      0      128            :::22                         :::*                  
LISTEN      0      128           ::1:631                        :::*                  
LISTEN      0      100           ::1:25                         :::*                  
LISTEN      0      128           ::1:6010                       :::*

在上面的输出结果中,从左到右共有5个字段,各字段的含义如下:

  • State:表示连接状态(共11种),如:LISTEN(监听)、ESTABLISHED(连接已经建立)。
  • Recv-Q:从远程主机传送过来的数据已经在本地接收缓冲,但是还没有被进程取走的字节数。
  • Send-Q:表示对方没有收到的数据或者说没有应答Ack的字节数。
  • Local Address:Port:表示本地地址和服务端口,默认显示主机名和服务名称,使用选项-n后显示主机的IP地址和端口号,若为“*”表示“所有”、若为“::”表示所有IPv6接口、若为“::1”表示IPv6回环接口lo。
  • Peer Address:Port:表示与本机连接的远程主机的地址和端口,默认显示主机名和服务名称,使用选项-n后显示主机的IP地址及端口号。

例:查看所有的TCP端口和使用它们的进程

[root@localhost ~]# ss -tnap
State      Recv-Q Send-Q       Local Address:Port                      Peer Address:Port              
LISTEN     0      128                      *:111                                  *:*                   users:(("rpcbind",pid=722,fd=8))
LISTEN     0      5            192.168.122.1:53                                   *:*                   users:(("dnsmasq",pid=1553,fd=6))
LISTEN     0      128                      *:22                                   *:*                   users:(("sshd",pid=1184,fd=3))
LISTEN     0      128              127.0.0.1:631                                  *:*                   users:(("cupsd",pid=1181,fd=12))
LISTEN     0      100              127.0.0.1:25                                   *:*                   users:(("master",pid=1561,fd=13))
LISTEN     0      128              127.0.0.1:6010                                 *:*                   users:(("sshd",pid=1380,fd=9))
ESTAB      0      36          192.168.28.200:22                        192.168.28.1:51342               users:(("sshd",pid=1380,fd=3))
LISTEN     0      128                     :::111                                 :::*                   users:(("rpcbind",pid=722,fd=11))
LISTEN     0      128                     :::22                                  :::*                   users:(("sshd",pid=1184,fd=4))
LISTEN     0      128                    ::1:631                                 :::*                   users:(("cupsd",pid=1181,fd=11))
LISTEN     0      100                    ::1:25                                  :::*                   users:(("master",pid=1561,fd=14))
LISTEN     0      128                    ::1:6010                                :::*                   users:(("sshd",pid=1380,fd=8))


四、总结

  • ss(Socket Statistics,套接字统计):可以用来获取socket统计信息
  • 显示的内容与netstat类似,但能够显示更多更详细的有关TCP和连接状态的信息
  • ss命令返回5个字段的内容:State, Recv-Q, Send-Q, Local Address:Port, Peer Address:Port

五、思维导图


相关推荐