举荐浏览:每天学一个 Linux 命令(65):netstat
命令简介
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连贯信息
[root@CentOS7-1 ~]# ss -t -aState 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连贯信息
[root@CentOS7-1 ~]# ss -u -aState 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 摘要信息
[root@CentOS7-1 ~]# ss -sTotal: 569 (kernel 1020)TCP: 9 (estab 1, closed 0, orphaned 0, synrecv 0, timewait 0/0), ports 0Transport 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的效率比照
[root@CentOS7-1 ~]# time netstat -an|awk '/^tcp/{++S[$NF]}END{for(a in S) print a,S[a]}' LISTEN 8ESTABLISHED 1real 0m0.021suser 0m0.009ssys 0m0.009s[root@CentOS7-1 ~]# time ss -tan|awk 'NR>1{++S[$1]}END{for (a in S) print a,S[a]}'LISTEN 8ESTAB 1real 0m0.009suser 0m0.007ssys 0m0.001s
查看TCP或UDP连接数的脚本
[root@CentOS7-1 ~]# ./get_tcp_or_udp-connetios.shUsage: 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 timewait0[root@CentOS7-1 ~]# ./get_tcp_or_udp-connetios.sh listen8[root@CentOS7-1 ~]# ./get_tcp_or_udp-connetios.sh established1[root@CentOS7-1 ~]# ./get_tcp_or_udp-connetios.sh closed0[root@CentOS7-1 ~]# ./get_tcp_or_udp-connetios.sh closing0[root@CentOS7-1 ~]# ./get_tcp_or_udp-connetios.sh closewait0[root@CentOS7-1 ~]# ./get_tcp_or_udp-connetios.sh synrecv0[root@CentOS7-1 ~]# ./get_tcp_or_udp-connetios.sh lastack0
有须要此脚本的读者,能够在本公众号后盾对话框回复关键字【连接数脚本】下载本脚本。
每天学一个 Linux 命令(63):route
每天学一个 Linux 命令(64):ifconfig