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 折,非常适合学习和测试使用。

相关推荐
mounter6251 小时前
Linux 内核资源管理:控制组(cgroup)的演进与“策略组”新提案
linux·运维·服务器·cgroup·kernel
bksczm1 小时前
文件在磁盘中的存储方式
linux·运维·服务器
L1624761 小时前
OpenSSH 半自动升级方案(独立编译 + 手动迁移 + 重建 systemd 服务)
linux·服务器·ssh
半旧夜夏1 小时前
【保姆级】微服务组件环境搭建(Docker Compose版)
java·linux·spring cloud·微服务·云原生·容器
Wpa.wk1 小时前
win环境本地文件上传远程服务器(scp/远程连接工具)
运维·服务器
Soari2 小时前
SSH 主机密钥冲突
运维·网络·ssh
爱莉希雅&&&2 小时前
zabbix快速搭建和使用
android·linux·数据库·zabbix·监控
z200509302 小时前
【linux学习】深入理解linux文件I/O,从C标准库到内核态
linux·学习·操作系统
黑泽明Coding2 小时前
使用密钥登录ssh
运维·ssh