Netstat按端口计数TIME_WAIT连接

我可以在一个端口上获得单独的TIME_WAIT计数,

netstat -nat | grep :11300 | grep TIME_WAIT | wc -l; 

但如何基于所有端口做到这一点,例如:

 11300 2900 connection 3306 1200 connection 80 890 connection 

这几天我发送使用sed这种types的东西。

 $ netstat -nt | sed -r -n 's/^tcp +[0-9]+ +[0-9]+ [0-9\.]+(:[0-9]+).+TIME_WAIT/\1/p' | sort | uniq -c | sort -n 5 :443 8 :80 

在这里,我们看起来有一条特定的路线,但它真的是一条线。 所以我们使用该部分的匹配组来定义正则expression式,然后只打印我们关心的匹配线段。 我还没有find更好的方法sort | uniq -c sort | uniq -c 。 最后一种是美学和实用。

我敢肯定,没有双重和双重的select,有一个更清晰的方法可以做到这一点。 (希望有人能阐明这一点)

基于shell的( kshbash )For-Loop

 for x in $ (netstat -nat | grep TIME_WAIT | awk '{print $4}' | \ awk -F":" '{print $2}' | sort -u) ; do printf "TIME_WAIT on Port $x : `netstat -nat|grep ":$x"|grep TIME_WAIT|wc -l`\n" done 

产量

 TIME_WAIT on Port 42489 : 1 TIME_WAIT on Port 80 : 9