Netstat 按端口统计 TIME_WAIT 连接数

Netstat 按端口统计 TIME_WAIT 连接数

我可以获取端口上的单个 TIME_WAIT 计数,

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

但是如何基于所有端口执行此操作例如:

11300   2900 connection
3306    1200 connection
80      890 connection

答案1

这些天我发送了sed用于此类事物的信息。

$ 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

这里我们感兴趣的是一行看起来特别,但实际上只是其中的一部分。所以我们用匹配组为该部分定义正则表达式,然后只打印我们关心的匹配行。我还没有找到更好的解决方法sort | uniq -c。最后一种排序是为了美观和实用。

答案2

我确信有一种更简洁的方法可以做到这一点,而无需重复使用 double- awk'ing 和 double- grep'ing。(希望有人可以详细说明这一点)

基于 Shell 的(kshbash)For 循环

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

相关内容