nethogs是最贴切的工具,它按进程(pid+命令名)实时聚合网络流量,不依赖dns解析,能直接显示每个进程的发送/接收速率及累计流量,精准定位带宽占用者。

直接看进程的网络连接数和流量消耗,nethogs是最贴切的工具——它按进程(PID + 命令名)聚合实时流量,不依赖DNS解析,也不需要你手动关联端口和进程。
用 nethogs 查看每个进程的实时流量
nethogs 启动后立刻列出所有活跃进程的发送(TX)和接收(RX)速率,以及当前会话累计流量。它能准确告诉你“是哪个程序在吃带宽”,比如 chrome、dockerd 或某个 Python 脚本。
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 安装命令(Ubuntu/Debian):sudo apt install nethogs;CentOS/RHEL 8+ 需先启用 EPEL:sudo dnf install epel-release && sudo dnf install nethogs
- 基本运行:sudo nethogs(默认监控第一个非 lo 网卡)
- 指定网卡更准:sudo nethogs eth0(避免混杂模式抓到无关接口)
- 文本模式兼容性更好(终端不支持 curses 时):sudo nethogs -t
- 每2秒刷新一次,只显示1行摘要:sudo nethogs -t -c 1 -d 2 eth0,适合配合 watch 使用
用 ss + lsof 辅助查连接数与归属进程
nethogs 不显示连接数本身,但你可以用 ss 快速统计每个进程打开的 socket 数量,再用 lsof 验证细节。
- 查看所有 TCP 连接并按 PID 分组计数:sudo ss -tn | awk '{print $7}' | grep -o 'pid=[0-9]\+' | sort | uniq -c | sort -nr
- 查某进程(如 PID 1234)打开了多少个网络连接:sudo ss -tnp | grep ':1234' | wc -l
- 确认某个端口被谁占用:sudo lsof -i :8080,或列出某进程所有网络 socket:sudo lsof -p 1234 -i
补充:快速识别异常高连接数进程
有些服务(如 nginx、redis)正常时连接数就高,关键看是否突增或指向可疑地址。可结合以下操作缩小排查范围:
- 只看 ESTABLISHED 状态的连接:sudo ss -tn state established | wc -l
- 筛选出连接数超过 50 的进程:sudo ss -tnp | awk -F',' '{print $2}' | grep -o 'pid=[0-9]\+' | cut -d= -f2 | sort | uniq -c | awk '$1 > 50'
- 发现异常后,用 ps -p PID -o pid,comm,user,etime 查看进程启动时间与用户,判断是否为预期服务










