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 等)
区分监听与活跃连接
单独统计服务端监听端口和客户端已建立连接,有助于判断服务是否就绪或是否存在异常连接激增:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 只看监听中的 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+端口维度的连接分布

















