准确统计linux tcp/udp连接数需区分协议与状态:netstat -tn | wc -l得全部tcp连接,netstat -tn | grep established | wc -l得活跃通信连接,netstat -un | wc -l得udp套接字总数,netstat -uln | wc -l得监听udp端口数,按状态分类用netstat -n | awk '/^tcp/ {++s[$nf]} end {for(a in s) print a, s[a]}'。

要准确统计 Linux 系统中 TCP 和 UDP 连接数,关键在于区分协议类型、连接状态(如 ESTABLISHED、LISTEN)以及是否包含监听端口。netstat 虽在新系统中逐渐被 ss 替代,但语法直观、兼容性强,仍是快速排查的实用工具。
统计所有 TCP 连接总数
执行 netstat -tn | wc -l 可获取当前全部 TCP 连接行数(含 LISTEN、ESTABLISHED、TIME_WAIT 等)。注意:该结果包含监听状态,不代表活跃通信连接。
若只关心已建立的通信连接,用:
- netstat -tn | grep ESTABLISHED | wc -l —— 统计正在通信的 TCP 连接
- netstat -tn | grep LISTEN | wc -l —— 统计监听中的 TCP 端口数量
统计所有 UDP 连接数
UDP 是无连接协议,没有 ESTABLISHED 状态,其“连接数”实际指已绑定的 UDP 套接字数量(即监听或已发送数据的端点)。
常用命令:
- netstat -un | wc -l —— 列出所有 UDP 套接字并计数(含监听与非监听)
- netstat -uln | wc -l —— 仅统计处于 LISTEN 状态的 UDP 端口(如 DNS 服务)
注意:-u 参数单独使用时默认包含监听和非监听;加 -l 可限定为监听态,更贴近“服务端口占用”场景。
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
按状态分类统计 TCP 连接分布
单一数值易掩盖异常,建议一次性查看各状态连接数量,便于发现潜在问题(如大量 SYN_RECV 可能遭遇攻击,过多 CLOSE_WAIT 往往是应用未正确关闭 socket)。
运行以下命令:
- netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
输出示例:
ESTABLISHED 124TIME_WAIT 892
LISTEN 16
CLOSE_WAIT 5
SYN_RECV 0
重点关注 ESTABLISHED(真实业务连接)、TIME_WAIT(短连接频繁的正常现象)、CLOSE_WAIT(需检查服务端代码释放逻辑)。
查端口占用与进程关联(TCP/UDP 通用)
当发现某类连接数异常偏高,需定位具体进程时,必须加 -p 参数(需 root 权限):
- sudo netstat -tulnp —— 查看所有监听的 TCP/UDP 端口及对应 PID/程序名
- sudo netstat -tnp | grep :80 —— 快速确认 80 端口上有哪些 ESTABLISHED 连接及所属进程
- sudo netstat -unp | grep :53 —— 检查 DNS(UDP 53)是否有异常绑定
注意:grep 中端口号后加空格(如 :80 )可避免匹配到 8080;IPv6 地址格式(如 [::]:22)需用 grep -v '\[.*\]' 排除干扰。










