netstat 可通过组合 -a、-n、-t/-u 等选项配合 awk/grep 统计连接状态;tcp 可按 established、time-wait 等状态分组计数,udp 则仅能统计监听端口,因无连接状态;加 -p 可关联进程定位高负载来源。

netstat 可以直接统计连接状态,关键在于组合 -a(所有连接)、-n(数字格式加快处理)、-t 或 -u(按协议筛选)等选项,并配合 awk 或 grep 做状态聚合。
快速统计 TCP 连接各状态数量
执行以下命令可列出所有 TCP 连接并按状态分组计数:
netstat -ant | awk '/^tcp/ {++S[$6]} END {for (x in S) print x, S[x]}'- 输出类似:
ESTABLISHED 42、TIME-WAIT 18、LISTEN 15 - 其中
$6对应 netstat 输出的第六列——即 State 字段(如 ESTABLISHED、LISTEN、TIME-WAIT 等)
区分监听与活跃连接
单独统计服务端监听端口和客户端已建立连接,有助于判断服务是否就绪或是否存在异常连接激增:
- 只看监听中的 TCP 端口:
netstat -ltn | wc -l(减去表头行后即为监听数量) - 只看已建立的 TCP 连接:
netstat -ant | grep 'ESTABLISHED' | wc -l - 查看 TIME-WAIT 连接数(过高可能影响新连接):
netstat -ant | grep 'TIME-WAIT' | wc -l
UDP 连接状态统计(注意:UDP 无状态)
UDP 是无连接协议,没有 ESTABLISHED/LISTEN 等 TCP 状态,但 netstat 仍会显示 UDP 套接字是否处于监听状态:
- 统计监听中的 UDP 端口:
netstat -lnu | wc -l - 查看所有 UDP 套接字(含绑定未监听的):
netstat -anu,其 State 列统一显示为UNCONN - 真正有意义的是“是否有进程在监听某个 UDP 端口”,而非连接数
结合进程与协议做精准统计
加 -p 选项(需 root 权限)可关联 PID 和程序名,便于定位高连接数来源:
sudo netstat -atnp 2>/dev/null | grep ':80' | awk '{print $7}' | cut -d',' -f1 | sort | uniq -c | sort -nr- 该命令统计所有访问 80 端口的连接所属进程,帮助识别 Web 服务或代理的实际负载归属
- 若权限不足,
netstat -atn仍可提供 IP+端口维度的连接分布











