点击上方蓝字
关注大侠之运维
初入职场的运维,了解当前的网络状态情况,很多都会用到netstat这个命令,在很长的一段时间里,这个命令也是排查问题的利器。ss命令与netstat类似,但是ss命令效率更高,信息展示的更全。
两个命令的最根本区别在于netstat是去/proc下遍历PID的信息,但是ss则是直接去/proc/net下读取统计好的信息。
本文整理了关于ss的一些用法,如果还有其它没有提到的选项需要了解,可以执行ss -h 查看帮助。

♦️
实际用法
ss可以查看PACKET sockets,TCP sockets,UDP sockets,DCCP sockets,RAW sockets,Unix domain sockets等socket连接信息
如果要查看各类socket连接整体的一个统计信息的话,可以使用 -s的选项,可以测试看下结果。
[root@sc-01 ~]# ss -sTotal: 783 (kernel 1033)TCP: 458 (estab 123, closed 319, orphaned 0, synrecv 0, timewait 56/0), ports 0Transport Total IP IPv6* 1033 - -RAW 0 0 0UDP 3 2 1TCP 139 118 21INET 142 120 22FRAG 0 0 0
我们最常了解的就是TCP和INET了,前者是网络连接中最长用到的协议之一,后者包含了ipv6和ipv4请求和,可以通过 -4a、-6a分别查看。
上述命令可以让我们了解网络连接的一个大致的情况,如果要分别查看不同链接的具体情况,可以通过指定不同的连接参数,如查看TCP连接,可以指定-t来查看。
在执行查看前,可以先确认下链接条数,然后再去查看。
[root@sc-01 ~]# ss -t|wc -l124[root@sc-01 ~]# ss -t|moreState Recv-Q Send-Q Local Address:Port Peer Address:PortESTAB 0 0 192.168.20.6:42990 192.168.200.28:XmlIpcRegSvcESTAB 0 0 192.168.20.6:51164 10.100.1.51:jetdirectESTAB 0 0 192.168.20.6:51184 10.100.1.42:jetdirectESTAB 0 0 192.168.20.6:43620 192.168.61.14:jetdirectESTAB 0 0 192.168.20.6:60510 192.168.10.17:jetdirect
这个命令另外一个用到比较多的场景就是对本机开启的监听端口的查看,可以通过 ss -ltn来查看,注意加n可以显示具体的端口号,不加的话显示的是服务名。
可以看下效果:
[root@sc-01 ~]# ss -ltnState Recv-Q Send-Q Local Address:Port Peer Address:PortLISTEN 0 128 *:501 *:*LISTEN 0 128 127.0.0.1:10573 *:*LISTEN 0 5 *:2198 *:*LISTEN 0 128 *:29022 *:*LISTEN 0 128 [::]:9090 [::]:*LISTEN 0 128 [::]:33060 [::]:*LISTEN 0 128 [::]:33061 [::]:*LISTEN 0 128 [::]:11111 [::]:*LISTEN 0 128 [::]:9100 [::]:*LISTEN 0 50 [::ffff:192.168.20.6]:9997 [::]:*LISTEN 0 128 [::]:222 [::]:*LISTEN 0 128 [::]:63790 [::]:*LISTEN 0 100 [::]:8080 [::]:*LISTEN 0 128 [::]:80 [::]:*LISTEN 0 5 [::]:2198 [::]:*LISTEN 0 128 [::]:22 [::]:*
如果要统计服务器目前的并发数的话,可以通过如下命令来查看
state可以过滤一些参数来查看具体信息
[root@sc-01 ~]# ss -o state established |wc -l170
上述state可以过滤的一些状态包括:
established|syn-sent|syn-recv|fin-wait-{1,2}|time-wait|closed|close-wait|last-ack|listen|closing
另外ss也可以通过对ip来进行筛选,还可以对具体的来源端口sport、目标端口进行一定的过滤。
ss src ADDRESS_PATTERN[root@sc-01 ~]# ss src 192.168.20.6:39778Netid State Recv-Q Send-Q Local Address:Port Peer Address:Porttcp ESTAB 0 0 192.168.20.6:39778 192.168.4.5:jetdirect
ss dport OP PORT[root@sc-01 ~]# ss \( sport \> 54000 and sport \< 59000 \)Netid State Recv-Q Send-Q Local Address:Port Peer Address:Portu_str ESTAB 0 0 * 54216 * 53098u_str ESTAB 0 0 * 54208 * 53078tcp ESTAB 0 0 192.168.20.6:58878 192.168.5.9:jetdirecttcp ESTAB 0 0 192.168.20.6:57278 192.168.1.23:jetdirecttcp ESTAB 0 0 192.168.20.6:54830 192.168.6.18:jetdirecttcp ESTAB 0 0 192.168.20.6:55284 192.168.1.18:jetdirecttcp ESTAB 0 0 192.168.20.6:54516 10.100.1.1:jetdirecttcp ESTAB 0 0 192.168.20.6:54832 192.168.6.23:jetdirecttcp ESTAB 0 0 192.168.20.6:57190 192.168.5.8:jetdirect
最后附上ss -h的帮助页:
[root@sc-01 ~]# ss -hUsage: 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 FAMILYFAMILY := {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=QUERYQUERY := {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 FILEFILTER := [ 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}

👆点击查看更多内容👆




