使用awk对TCP的状态连接数进行统计的二种方法:

1、 netstat -an | awk '/tcp\>/ {s[$NF]++} END {for(a in s) {print a,s[a]}}'

2、 netstat -an | awk '/tcp\>/ {print $NF}' | sort | uniq -c  


结果如下:


[root@sandun ~]# time netstat -an | awk '/tcp\>/ {s[$NF]++} END {for(a in s) {print a,s[a]}}'
LISTEN 15
ESTABLISHED 21
FIN_WAIT1 3
SYN_SENT 4
TIME_WAIT 1333

real    0m0.254s
user    0m0.030s
sys     0m0.235s


[root@sandun ~]# time netstat -an | awk '/tcp\>/ {print $NF}' | sort | uniq -c               
     21 ESTABLISHED
      3 FIN_WAIT1
     15 LISTEN
      4 SYN_SENT
   1359 TIME_WAIT

real    0m0.279s
user    0m0.051s
sys     0m0.239s


相对来说第一种方法只使用了awk方法,而第二种使用多个shell命令,效率要略有提升。