每天一个Linux命令(51)ss命令

时间:2024-01-06 17:18:26

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

    (1)用法:

    用法:  ss  [参数]

      ss  [参数]  [过滤]

    (2)功能:

    功能:  ss是类似netstat的工具。能显示查看网络状态信息,包括TCP、UDP连接,端口。

   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也可以正常运行,只是效率会变得稍慢。

    (3)选项参数

1) -t, --tcp         仅显示TCP套接字(sockets)

2) -a, --all         显示所有套接字(sockets)

3) -s, --summary       显示套接字(socket)使用概况

4) -l             显示LISTEN状态的连接(连接打开)

5) -p, --processes          显示使用套接字(socket)的进程

6) -u, --udp           仅显示 UCP套接字(sockets)

7) -d, --dccp          仅显示 DCCP套接字(sockets)

8) -w, --raw         仅显示 RAW套接字(sockets)

9) -x, --unix         仅显示 Unix套接字(sockets)

    (4)实例:

1)[root@localhost sunjimeng]# ss -t -a      显示TCP连接

[root@localhost sunjimeng]# ss -t -a
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN *:ssh *:*
LISTEN 127.0.0.1:ipp *:*
LISTEN 127.0.0.1:smtp *:*
TIME-WAIT 192.168.142.128: 115.28.122.210:http
TIME-WAIT 192.168.142.128: 112.124.140.210:http
LISTEN :::ssh :::*
LISTEN :::ipp :::*
LISTEN :::smtp :::*
[root@localhost sunjimeng]# netstat -ta
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0.0.0.0:ssh 0.0.0.0:* LISTEN
tcp localhost:ipp 0.0.0.0:* LISTEN
tcp localhost:smtp 0.0.0.0:* LISTEN
tcp 192.168.142.128: ec2----.:https ESTABLISHED
tcp 192.168.142.128: ec2----:https ESTABLISHED
tcp 192.168.142.128: ec2----:https ESTABLISHED
tcp6 [::]:ssh [::]:* LISTEN
tcp6 localhost:ipp [::]:* LISTEN
tcp6 localhost:smtp [::]:* LISTEN

2)[root@localhost sunjimeng]# ss -s      显示套接字使用概况(列出当前的established, closed, orphaned and waiting TCP sockets)

[root@localhost sunjimeng]# ss -s
Total: (kernel )
TCP: (estab , closed , orphaned , synrecv , timewait /), ports Transport Total IP IPv6
* - -
RAW
UDP
TCP
INET
FRAG

3)[root@localhost sunjimeng]# ss -l        列出所有打开的网络连接端口,即已经连接的网络端口

[root@localhost sunjimeng]# ss -l
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
nl UNCONN rtnl:NetworkManager/ *
nl UNCONN rtnl:gnome-shell/ *
......
u_dgr UNCONN * *
u_dgr UNCONN * *
raw UNCONN :::ipv6-icmp :::*
tcp UNCONN *:ipproto- *:*
tcp UNCONN *:ptp *:*
tcp UNCONN 127.0.0.1:ipproto- *:*
tcp UNCONN *:ipproto- *:*
tcp UNCONN *:ipproto- *:*
tcp UNCONN *:ipproto- *:*
tcp UNCONN :::ptp :::*
tcp UNCONN :::ipproto- :::*
tcp UNCONN :::ipproto- :::*
tcp LISTEN *:ssh *:*
tcp LISTEN 127.0.0.1:ipp *:*
tcp LISTEN 127.0.0.1:smtp *:*
tcp LISTEN :::ssh :::*
tcp LISTEN :::ipp :::*
tcp LISTEN :::smtp :::*

4)[root@localhost sunjimeng]# ss -t -a -p      显示使用套接字的进程的信息

[root@localhost sunjimeng]# ss -t -a
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN *:ssh *:*
LISTEN 127.0.0.1:ipp *:*
LISTEN 127.0.0.1:smtp *:*
LISTEN :::ssh :::*
LISTEN :::ipp :::*
LISTEN :::smtp :::*
[root@localhost sunjimeng]# ss -t -a -p
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN *:ssh *:* users:(("sshd",,))
LISTEN 127.0.0.1:ipp *:* users:(("cupsd",,))
LISTEN 127.0.0.1:smtp *:* users:(("master",,))
LISTEN :::ssh :::* users:(("sshd",,))
LISTEN :::ipp :::* users:(("cupsd",,))
LISTEN :::smtp :::* users:(("master",,))

5)[root@localhost sunjimeng]# ss -pl |grep 1487   显示端口号为1487的已连接的套接字的进程信息

[root@localhost sunjimeng]# ss -pl |grep
u_str LISTEN /run/systemd/journal/stdout * users:(("systemd-journal",,),("systemd",,))
[root@localhost sunjimeng]#

6)两个命令的时间对比:

[root@localhost sunjimeng]# time ss

real    0m0.081s
user 0m0.000s
sys 0m0.004s
[root@localhost sunjimeng]# time netstat real 0m0.018s
user 0m0.004s
sys 0m0.000s
[root@localhost sunjimeng]#