iftop、nethogs 和 nload:Linux 服务器网络流量实时监控工具介绍
iftop、nethogs 和 nload:Linux 服务器网络流量实时监控工具介绍
在管理 Linux 服务器时,网络流量异常是最常见的问题之一。带宽被耗尽、某个进程疯狂上传、服务器响应变慢——这些情况都需要快速定位根源。本文介绍四款互补的网络监控工具:iftop、nethogs、nload和vnstat,覆盖从实时连接级别到历史统计的全方位监控需求。
服务器配置
网络监控工具本身对硬件要求极低,任意 Linux 服务器即可运行。如果你还没有服务器,推荐使用雨云服务器 rainyun-com,1 核 1GB 机型完全够用。注册填优惠码2026off领 5 折。
四款工具概览
| 工具 | 监控维度 | 核心用途 |
|---|---|---|
| iftop | 按连接(src/dst IP 对) | 查看哪个远端 IP 占用带宽 |
| nethogs | 按进程(PID) | 查看哪个程序在消耗流量 |
| nload | 按网卡总量 | 简洁的实时吞吐量显示 |
| vnstat | 历史统计 | 每日/月度流量汇总 |
实战思路:带宽告急 → 先用nload确认总量 → 再用iftop找出占用带宽的远端 IP → 最后用nethogs锁定是哪个进程在发包。
一键安装
aptupdateaptinstalliftop nethogs nload vnstat-y安装完毕后,各工具均可直接通过命令行调用。
iftop:连接级带宽监控
基础用法
# 监控指定网卡iftop-ieth0# 只统计特定子网的流量iftop-ieth0-F192.168.1.0/24# 不做 DNS 反解(避免因 DNS 查询导致界面卡顿)iftop-ieth0-n解读输出界面
iftop 的主界面分三列:
12.5Kb 25.0Kb 37.5Kb 50.0Kb 62.5Kb └──────────────────────────────────────────────────────────────────────────┘ 203.0.113.5:443 => 1.23Mb 987Kb 876Kb your-server:45678 <= 456Kb 234Kb 189Kb- 右侧三列数字分别是2 秒均值、10 秒均值、40 秒均值(峰值到稳定值的过渡)
=>表示发送(upload),<=表示接收(download)- 底部 TX / RX / TOTAL 汇总全部连接
常用快捷键
| 按键 | 功能 |
|---|---|
t | 切换显示模式:仅发送 / 仅接收 / 合计 |
s | 按源地址过滤 |
d | 按目的地址过滤 |
p | 切换显示端口号 |
n | 切换 DNS 解析开关 |
P | 暂停/继续刷新 |
q | 退出 |
实战场景:找出外联的大流量 IP
iftop-ieth0-n-p打开端口显示后,可以立刻看到哪个远端 IP 的哪个端口在大量传输数据,结合业务判断是否正常。
nethogs:进程级带宽监控
iftop 告诉你"哪个 IP",nethogs 告诉你"哪个程序"。
基础用法
# 监控 eth0 上各进程的流量nethogs eth0# 同时监控多块网卡nethogs eth0 eth1# 设置刷新间隔为 2 秒(默认 1 秒)nethogs-d2eth0输出解读
NetHogs version 0.8.7 PID USER PROGRAM DEV SENT RECEIVED 23451 www-data /usr/sbin/nginx eth0 1.234 MB/s 0.023 MB/s 18932 root /usr/bin/rsync eth0 0.000 MB/s 4.567 MB/s 1 root /sbin/init eth0 0.000 MB/s 0.000 MB/sSENT是该进程的上传速率RECEIVED是该进程的下载速率
非交互模式(适合脚本)
# -t 参数输出纯文本,适合 grep 和日志记录nethogs-t-d5eth02>/dev/null|grep-v"^$"快捷键
| 按键 | 功能 |
|---|---|
m | 切换单位(KB/s ↔ MB/s ↔ B/s ↔ 总量) |
r | 按接收量排序 |
s | 按发送量排序 |
q | 退出 |
实战:找出疯狂上传的进程
nethogs-d2eth0按s按发送量排序,如果某个你不认识的进程排在第一位,立即用ps aux | grep PID查看详情,必要时kill掉。
nload:网卡级吞吐量可视化
nload 是最直观的工具,用 ASCII 柱状图展示当前网卡的进出流量,适合快速确认"现在带宽用到多少了"。
基础用法
# 监控默认网卡nload# 指定网卡nload eth0# 同时显示多块网卡(用空格分隔)nload eth0 lo界面说明
Device eth0 [192.168.1.100] (1/2): ================================================================================ Incoming: Outgoing: #### #### ######## ########## ############## ############## #################### #################### ########################## Curr: 2.34 MBit/s Curr: 156.23 KBit/s Avg: 1.89 MBit/s Avg: 143.12 KBit/s Min: 0.12 MBit/s Min: 12.34 KBit/s Max: 5.67 MBit/s Max: 234.56 KBit/s Ttl: 1.23 GByte Ttl: 234.56 MByte快捷键
| 按键 | 功能 |
|---|---|
←/→ | 切换网卡 |
F2 | 打开设置(调整显示单位等) |
q | 退出 |
调整显示单位
在F2设置页面,可以将纵轴单位切换为 Kbit/s、Mbit/s 或 Gbit/s,方便对照服务器的带宽上限(例如 100Mbps 带宽的服务器,Mbit/s 是最直观的单位)。
vnstat:历史流量统计
前三款工具都是"实时"的,vnstat 则专注于历史统计,记录每小时、每天、每月的流量总量,非常适合:
- 按月统计用量,避免超出流量包
- 对比不同时段的流量基线
- 生成流量报告
初始化与启动
# 为网卡创建数据库vnstat-ieth0# 启动 vnstat 守护进程(开机自启)systemctlenablevnstat systemctl start vnstat常用查询命令
# 查看概览(默认显示)vnstat# 按小时统计(今天)vnstat-h# 按天统计(最近30天)vnstat-d# 按月统计vnstat-m# 实时流量(类似 nload)vnstat-l-ieth0# 导出为 JSON(适合脚本处理)vnstat--json输出示例
eth0 / monthly month rx | tx | total | avg. rate ------------------------+-------------+-------------+--------------- 2026-03 23.45 GiB | 12.34 GiB | 35.79 GiB | 114.52 kbit/s 2026-04 31.20 GiB | 15.67 GiB | 46.87 GiB | 147.89 kbit/s 2026-05 18.90 GiB | 9.45 GiB | 28.35 GiB | 132.14 kbit/s ------------------------+-------------+-------------+--------------- estimated 35.12 GiB | 17.56 GiB | 52.68 GiB |综合实战:带宽问题排查流程
假设你的服务器突然变慢,SSH 连接也有些卡顿,按以下步骤排查:
第一步:确认带宽使用总量
nload eth0如果接近或达到带宽上限(比如 100Mbps 的服务器显示 Curr: 95 MBit/s),说明确实存在带宽瓶颈。
第二步:找出高流量的远端 IP
iftop-ieth0-n-p观察哪些远端 IP 占用最多带宽,判断是否是正常业务(如 CDN 回源、备份传输)。
第三步:锁定是哪个进程
nethogs eth0按s排序,找出发包最多的进程,记录 PID。
第四步:查看进程详情
psaux|grep<PID>ls-l/proc/<PID>/exe第五步:查看历史趋势
vnstat-h对比今天各小时的流量,判断异常是否持续。
总结
这四款工具构成了一套完整的网络流量监控体系:
- nload— 快速感知整体带宽压力
- iftop— 精确到连接粒度,找出"谁在占带宽"
- nethogs— 精确到进程粒度,找出"什么程序在占带宽"
- vnstat— 历史流量统计,掌握长期趋势
如果你正在寻找一台用于运维实验的云服务器,雨云服务器 rainyun-com的 1 核 1GB 机型即可流畅运行所有上述工具,注册填优惠码2026off领 5 折,非常适合学习和测试使用。
