Linux流量监控iftop:新手也能搞定的Linux流量监

新手也能搞定的Linux流量监控:iftop安装与使用指南
服务器带宽跑满、网站变慢,却不知道是哪个IP或进程在“偷跑”流量?iftop 就是解决这个问题的利器。
它能在终端实时显示每个连接占用的带宽,按流量排序,一眼看出谁在“抢网速”。
本文从零开始,手把手教你安装、使用、解读结果,并避开常见坑。
安装iftop:一个命令搞定
CentOS / RHEL 系列 首先安装 EPEL 源(因为 iftop 不在默认仓库):
sudo yum install epel-release -y
sudo yum install iftop -yUbuntu / Debian 系列 直接使用 apt:
sudo apt update
sudo apt install iftop -y安装完成后,输入 iftop 即可启动。
如果提示“command not found”,检查是否成功安装,或尝试 sudo iftop(需要 root 权限才能看到所有连接)。
启动与界面解读
运行 sudo iftop 后,你会看到一个实时刷新的终端界面,分为三部分:
- 上半部分:列出每个连接的对端IP地址、发送/接收速率。
- 中间部分:条形图直观显示流量峰值。
- 底部汇总:TX(发送总流量)、RX(接收总流量)、TOTAL(合计)。
默认单位是 bits,按 b 可切换为 bytes。
按 n 可以显示IP地址而不是域名解析,速度更快。
常用参数与操作技巧
启动时指定监控网卡 如果你的服务器有多张网卡,用 -i 参数:
sudo iftop -i eth0过滤特定IP或端口 按 F 键进入过滤模式,输入过滤表达式(类似 tcpdump 语法),例如:
host 192.168.1.100
port 80
not host 10.0.0.1排序与显示 默认按流量大小排序。
按 T 可切换累计流量排序,按 1/2/3 切换显示列。
按 q 退出。
常见问题与避坑指南
问题1:运行iftop提示“pcap: can't find device” 原因:没有指定正确的网卡或权限不足。
解决:先执行 ip link show 或 ifconfig 查看可用网卡名称,然后用 sudo iftop -i 网卡名。
问题2:为什么看到的流量和实际带宽不符? iftop 默认测量的是链路层流量(包含帧头),带宽显示可能略大于应用层数据。
另外,如果你运行在虚拟化环境中,部分流量可能被宿主机过滤,导致监控偏差。
问题3:流量监控时界面卡顿或花屏? 一般是因为终端宽度不够或字体问题。
调整终端窗口大小到120列以上,或使用 -t 文本模式导出结果(不交互):
sudo iftop -i eth0 -t -L 10 > /tmp/iftop.log避坑提醒: 在业务高峰期运行交互式iftop可能会占用少量CPU,建议长时间监控时使用 -t 模式并写脚本定期抓取数据。
另外,不要忘记关闭DNS解析(启动时加 -n 参数),否则iftop会尝试反向解析每个IP,导致大量DNS查询影响性能。
验证与进阶
完成上述步骤后,你可以在另一台机器上向本机发送大文件(比如用 nc 或 scp),观察 iftop 界面中对应IP的流量是否同步上升。
如果没有变化,检查网卡参数是否正确,或防火墙是否拦截了流量。
进阶玩法: 结合 cron 定时抓取 iftop 日志,再用 awk 或 python 分析历史流量趋势,找出高峰时段和异常IP。
也可以搭配 nethogs 按进程查看流量(类似iftop但按进程分组)。
如果你正在排查 Linux 流量异常,建议先按本文安装 iftop,快速定位“谁是流量大户”,再对症下药。
多试几次,你会发现终端效率远高于图形界面。