iftop、nethogs 和 nload:Linux 服务器网络流量实时监控工具介绍

iftop、nethogs 和 nload:Linux 服务器网络流量实时监控工具介绍

在管理 Linux 服务器时,网络流量异常是最常见的问题之一。带宽被耗尽、某个进程疯狂上传、服务器响应变慢------这些情况都需要快速定位根源。本文介绍四款互补的网络监控工具:iftopnethogsnloadvnstat,覆盖从实时连接级别到历史统计的全方位监控需求。


服务器配置

网络监控工具本身对硬件要求极低,任意 Linux 服务器即可运行。如果你还没有服务器,推荐使用雨云服务器 rainyun-com ,1 核 1GB 机型完全够用。注册填优惠码 2026off 领 5 折。


四款工具概览

工具 监控维度 核心用途
iftop 按连接(src/dst IP 对) 查看哪个远端 IP 占用带宽
nethogs 按进程(PID) 查看哪个程序在消耗流量
nload 按网卡总量 简洁的实时吞吐量显示
vnstat 历史统计 每日/月度流量汇总

实战思路:带宽告急 → 先用 nload 确认总量 → 再用 iftop 找出占用带宽的远端 IP → 最后用 nethogs 锁定是哪个进程在发包。


一键安装

bash 复制代码
apt update
apt install iftop nethogs nload vnstat -y

安装完毕后,各工具均可直接通过命令行调用。


iftop:连接级带宽监控

基础用法

bash 复制代码
# 监控指定网卡
iftop -i eth0

# 只统计特定子网的流量
iftop -i eth0 -F 192.168.1.0/24

# 不做 DNS 反解(避免因 DNS 查询导致界面卡顿)
iftop -i eth0 -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

bash 复制代码
iftop -i eth0 -n -p

打开端口显示后,可以立刻看到哪个远端 IP 的哪个端口在大量传输数据,结合业务判断是否正常。


nethogs:进程级带宽监控

iftop 告诉你"哪个 IP",nethogs 告诉你"哪个程序"。

基础用法

bash 复制代码
# 监控 eth0 上各进程的流量
nethogs eth0

# 同时监控多块网卡
nethogs eth0 eth1

# 设置刷新间隔为 2 秒(默认 1 秒)
nethogs -d 2 eth0

输出解读

复制代码
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/s
  • SENT 是该进程的上传速率
  • RECEIVED 是该进程的下载速率

非交互模式(适合脚本)

bash 复制代码
# -t 参数输出纯文本,适合 grep 和日志记录
nethogs -t -d 5 eth0 2>/dev/null | grep -v "^$"

快捷键

按键 功能
m 切换单位(KB/s ↔ MB/s ↔ B/s ↔ 总量)
r 按接收量排序
s 按发送量排序
q 退出

实战:找出疯狂上传的进程

bash 复制代码
nethogs -d 2 eth0

s 按发送量排序,如果某个你不认识的进程排在第一位,立即用 ps aux | grep PID 查看详情,必要时 kill 掉。


nload:网卡级吞吐量可视化

nload 是最直观的工具,用 ASCII 柱状图展示当前网卡的进出流量,适合快速确认"现在带宽用到多少了"。

基础用法

bash 复制代码
# 监控默认网卡
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 则专注于历史统计,记录每小时、每天、每月的流量总量,非常适合:

  • 按月统计用量,避免超出流量包
  • 对比不同时段的流量基线
  • 生成流量报告

初始化与启动

bash 复制代码
# 为网卡创建数据库
vnstat -i eth0

# 启动 vnstat 守护进程(开机自启)
systemctl enable vnstat
systemctl start vnstat

常用查询命令

bash 复制代码
# 查看概览(默认显示)
vnstat

# 按小时统计(今天)
vnstat -h

# 按天统计(最近30天)
vnstat -d

# 按月统计
vnstat -m

# 实时流量(类似 nload)
vnstat -l -i eth0

# 导出为 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 连接也有些卡顿,按以下步骤排查:

第一步:确认带宽使用总量

bash 复制代码
nload eth0

如果接近或达到带宽上限(比如 100Mbps 的服务器显示 Curr: 95 MBit/s),说明确实存在带宽瓶颈。

第二步:找出高流量的远端 IP

bash 复制代码
iftop -i eth0 -n -p

观察哪些远端 IP 占用最多带宽,判断是否是正常业务(如 CDN 回源、备份传输)。

第三步:锁定是哪个进程

bash 复制代码
nethogs eth0

s 排序,找出发包最多的进程,记录 PID。

第四步:查看进程详情

bash 复制代码
ps aux | grep <PID>
ls -l /proc/<PID>/exe

第五步:查看历史趋势

bash 复制代码
vnstat -h

对比今天各小时的流量,判断异常是否持续。


总结

这四款工具构成了一套完整的网络流量监控体系:

  • nload --- 快速感知整体带宽压力
  • iftop --- 精确到连接粒度,找出"谁在占带宽"
  • nethogs --- 精确到进程粒度,找出"什么程序在占带宽"
  • vnstat --- 历史流量统计,掌握长期趋势

如果你正在寻找一台用于运维实验的云服务器,雨云服务器 rainyun-com 的 1 核 1GB 机型即可流畅运行所有上述工具,注册填优惠码 2026off 领 5 折,非常适合学习和测试使用。

相关推荐
zzzzzz3101 天前
9K Star 炸裂开源!这个 C 语言写的代码知识图谱,把 Linux 内核索引压缩到了 3 分钟
linux·服务器·sql
XIAOHEZIcode1 天前
Linux系统鼠标偏移常见原因以及修复方案
linux·运维·游戏
用户0328472220702 天前
如何搭建本地yum源(上)
运维
A小辣椒3 天前
TShark:Wireshark CLI 功能
linux
A小辣椒3 天前
TShark:基础知识
linux
AlfredZhao3 天前
OCI 明明分配了 200G 系统盘,为什么 df 只看到 30G?
linux·oci
AlfredZhao4 天前
vi 删除指定范围的行,不用再反复按 dd
linux·vi
用户9718356334664 天前
银河麒麟 KY10 申威(SW64) 安装 nginx-1.16.1-2.p01.ky10.sw_64.rpm 详细步骤
linux
猪脚踏浪4 天前
linux 拷贝文件或目录到指定的位置
linux
大树885 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai