Heng30的博客
搜索 分类 关于 订阅

一篇文章搞定Liunx网络流量监控

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"

解析/proc/net数据

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。