如何检查特定TCP端口上当前打开了多less个连接?

我正在做一些彗星的基准,并希望看到我有多less个开放的连接

其实我使用netstat:

netstat -ant | grep 8080 | grep EST | wc -l 

但是需要大概4-6分钟才能列出号码,是否有任何可以实时显示的工具? 打开的连接数量在100'000 – 250'000之间。

不知道lsof是否更好,但试试这个:

 lsof -ni:8080 -sTCP:ESTABLISHED | wc -l 

如果您只需要查看connecton统计信息,请从iproute suite尝试ss实用程序:

 # ss -s Total: 1788 (kernel 3134) TCP: 1638 (estab 1409, closed 162, orphaned 0, synrecv 0, timewait 127/0), ports 0 Transport Total IP IPv6 * 3134 - - RAW 0 0 0 UDP 74 69 5 TCP 1476 1444 32 INET 1550 1513 37 FRAG 0 0 0 

您也可以查看所有已build立连接的详细信息,如下所示:

 ss -n state established 

…或只有ssh连接:

 ss -n state established '( dport = :ssh or sport = :ssh )' 

本页底部的一些数字部分也可能会让你感兴趣。

另一种select是直接读取/proc/net/tcp 。 要查看所有build立的TCP连接,8080,你会做类似的事情

 $ printf %04X 8080 1F90 $ grep :1F90 /proc/net/tcp | grep ' 01 ' | wc -l 

如果您想在单个进程(较lessIO开销)和处理angular落情况下执行此操作,以下内容会告诉您有多lessESTABLISHED TCP连接具有本地端口8080:

 $ perl -anle ' $F[1] =~ /:1F90/ and $F[3] =~ /01/ and $cnt++; END { print 0+$cnt } ' /proc/net/tcp 

如果您的计算机上监听8080的软件具有IPv6支持,则还需要读取/proc/net/tcp6 ; 如果程序使用IPv6套接字,即使使用IPv4,连接也将显示在那里。

更容易的是

 #netstat -at | wc -l 

它会显示系统上的TCP连接数量…