2025-02-25
在Linux系统中,确定哪个程序正在消耗大量网络流量可以通过多种工具和方法实现。以下是几种常用的方法:
nethogs
是一个专门按进程(PID)实时监控网络流量的工具,适合直接定位高流量进程。
安装:sudo apt-get install nethogs
运行: sudo nethogs <网卡名称>
PID USER PROGRAM DEV SENT RECEIVED
2272 blue sshd: blue@pts/1 enp0s3 1.114 0.994 KB/sec
? root unknown TCP 0.000 0.000 KB/sec
TOTAL 1.114 0.994 KB/sec
iftop
按网络连接(IP/端口)显示流量,需结合其他工具关联到进程。
安装:sudo apt-get install iftop
运行:sudo iftop -i <网卡名称>
blue-VirtualBox.lan => nixos.lan 1.22Kb 1.39Kb 6.75Kb
<= 208b 208b 5.27Kb
blue-VirtualBox.lan => OpenWrt.lan 0b 0b 122b
<= 0b 0b 337b
...
TX: cum: 15.4KB peak: 1.72Kb rates: 800b 851b 1.02Kb
RX: 10.6KB 208b 208b 208b 208b
TOTAL: 25.9KB 1.92Kb 0.98Kb 1.03Kb 1.22Kb
查看占用某端口的进程:lsof -i :<端口号>
查看连接详情及进程:netstat -tunap
使用watch动态监控:watch -n 1 "netstat -tunap"
cat /proc/net/tcp # TCP 连接
cat /proc/net/udp # UDP 连接
记录高流量连接的inode值(最后一列)。通过inode查找进程:
lsof -i | grep <inode>
或
遍历/proc/<PID>/fd/查找匹配的socket。
安装:sudo apt-get install bmon nload vnstat
bmon:可视化监控各接口流量。
nload:分接口显示实时带宽。
vnstat:记录历史流量数据(按接口)。
sudo bmon
sudo nload <网卡名称>
vnstat -d # 查看每日统计
快速定位进程:优先使用nethogs。
分析具体连接:iftop + netstat/lsof。