推薦閱讀:天天學一個 Linux 命令(65):netstatios
ss 命令用於查看網絡狀態。ss 命令能夠用來獲取 socket 統計信息,它顯示的信息和 netstat 命令顯示的信息相似,但 ss 的優點在於它可以顯示更多更詳細的有關 TCP 和鏈接狀態的信息,並且比 netstat 更快速更高效。服務器
當服務器的 socket 鏈接數量變得很是大時,不管是使用 netstat 命令仍是直接 cat /proc/net/tcp,執行速度都會很慢。當服務器維持的鏈接達到上萬個的時候,使用 ss命令比netstat 更節省時間。網絡
ss [OPTIONS] ss [ OPTIONS ] [ FILTER ]
-h #打印幫助信息 -V #程序版本信息 -n #不解析服務名稱 -r #解析主機名 -a #顯示全部套接字(sockets) -l #顯示監聽狀態的套接字(sockets) -o #顯示計時器信息 -e #顯示詳細的套接字(sockets)信息 -m #顯示套接字(socket)的內存使用狀況 -p #顯示使用套接字(socket)的進程 -i #顯示 TCP內部信息 -s #顯示套接字(socket)使用概況 -4 #僅顯示IPv4的套接字(sockets) -6 #僅顯示IPv6的套接字(sockets) -0 #顯示 PACKET 套接字(socket) -t #僅顯示 TCP套接字(sockets) -u #僅顯示 UCP套接字(sockets) -d #僅顯示 DCCP套接字(sockets) -w #僅顯示 RAW套接字(sockets) -x #僅顯示 Unix套接字(sockets) -f #顯示 FAMILY類型的套接字(sockets) -D #將原始TCP套接字(sockets)信息轉儲到文件 -F #從文件中都去過濾器信息
顯示全部TCP鏈接信息ssh
[root@CentOS7-1 ~]# ss -t -a State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 *:ssh *:* LISTEN 0 100 127.0.0.1:smtp *:* LISTEN 0 128 127.0.0.1:8125 *:* LISTEN 0 128 *:dnp-sec *:* ESTAB 0 0 192.168.1.100:ssh 192.168.1.93:59231 LISTEN 0 128 [::]:ssh [::]:* LISTEN 0 100 [::1]:smtp [::]:* LISTEN 0 128 [::1]:8125 [::]:* LISTEN 0 128 [::]:dnp-sec [::]:*
顯示全部UDP鏈接信息socket
[root@CentOS7-1 ~]# ss -u -a State Recv-Q Send-Q Local Address:Port Peer Address:Port UNCONN 0 0 127.0.0.1:8125 *:* UNCONN 0 0 127.0.0.1:323 *:* UNCONN 0 0 [::1]:8125 [::]:* UNCONN 0 0 [::1]:323 [::]:*
顯示Sockets 摘要信息tcp
[root@CentOS7-1 ~]# ss -s Total: 569 (kernel 1020) TCP: 9 (estab 1, closed 0, orphaned 0, synrecv 0, timewait 0/0), ports 0 Transport Total IP IPv6 * 1020 - - RAW 1 0 1 UDP 4 2 2 TCP 9 5 4 INET 14 7 7 FRAG 0 0 0
#顯示全部狀態爲established的SSH鏈接 [root@CentOS7-1 ~]# ss -o state established '( dport = :ssh or sport = :ssh )' Netid Recv-Q Send-Q Local Address:Port Peer Address:Port tcp 0 52 192.168.1.100:ssh 192.168.1.93:59231 timer:(on,235ms,0) ss -o state established '( dport = :smtp or sport = :smtp )' #顯示全部狀態爲established的SMTP鏈接 ss -o state established '( dport = :http or sport = :http )' #顯示全部狀態爲Established的HTTP鏈接
ss與netstat的效率對比spa
[root@CentOS7-1 ~]# time netstat -an|awk '/^tcp/{++S[$NF]}END{for(a in S) print a,S[a]}' LISTEN 8 ESTABLISHED 1 real 0m0.021s user 0m0.009s sys 0m0.009s [root@CentOS7-1 ~]# time ss -tan|awk 'NR>1{++S[$1]}END{for (a in S) print a,S[a]}' LISTEN 8 ESTAB 1 real 0m0.009s user 0m0.007s sys 0m0.001s
查看TCP或UDP鏈接數的腳本code
[root@CentOS7-1 ~]# ./get_tcp_or_udp-connetios.sh Usage: sh ./get_tcp_or_udp-connetios.sh [closed|closing|closewait|synrecv|synsent|finwait1|finwait2|listen|established|lastack|timewait] [root@CentOS7-1 ~]# ./get_tcp_or_udp-connetios.sh timewait 0 [root@CentOS7-1 ~]# ./get_tcp_or_udp-connetios.sh listen 8 [root@CentOS7-1 ~]# ./get_tcp_or_udp-connetios.sh established 1 [root@CentOS7-1 ~]# ./get_tcp_or_udp-connetios.sh closed 0 [root@CentOS7-1 ~]# ./get_tcp_or_udp-connetios.sh closing 0 [root@CentOS7-1 ~]# ./get_tcp_or_udp-connetios.sh closewait 0 [root@CentOS7-1 ~]# ./get_tcp_or_udp-connetios.sh synrecv 0 [root@CentOS7-1 ~]# ./get_tcp_or_udp-connetios.sh lastack 0
有須要此腳本的讀者,能夠在本公衆號後臺對話框回覆關鍵字【鏈接數腳本】下載本腳本。blog