Linux系统中有各种查看网络流量的工具,比如sar、iftop、nethogs等,它们可以从不同的纬度来分析系统中流量信息,本文介绍如何使用sar、iftop、nethogs查看Linux系统网络流量负载情况。
1 sar工具的使用
sar(System Activity Reporter系统活动情况报告)是目前Linux上最为全面的系统性能分析工具之一,可以从多方面对系统的活动进行报告。sar可以从网络接口层面来分析数据包的收发情况、错误信息等。
1.1 sar命令
使用sar来监控网络流量的常用命令如下所示。
sar -n DEV [interval] [count]
说明:[interval]表示统计间隔,[count]表示统计次数。
1.2 使用示例
执行如下命令,使用sar每1秒统计一次网络接口的活动状况,连续统计5次。
sar -n DEV 1 5
命令执行后会列出每个网卡5次的平均数据取值,根据实际情况来确定带宽跑满的网卡名称
系统显示类似如下

显示结果主要字段说明:
- IFACE:网络接口名称。
- rxpck/s、txpck/s:每秒接收或发送的数据包数量。
- rxkB/s、txkB/s:每秒接收或发送的字节数,以kB/s为单位。
- rxcmp/s、txcmp/s:每秒接收或发送的压缩过的数据包数量。
- rxmcst/s:每秒接收到的多播数据包。
2 iftop工具的使用
iftop是Linux系统中一个免费的网卡实时流量监控工具,可以监控包括指定网卡的实时流量、端口连接信息、反向解析IP等信息。
2.1 iftop命令
iftop常用命令如下。
iftop [-i interface]
interface表示网络接口名,比如eth0、eth1等。如果不通过-i参数指定接口名,则默认检测第一块网卡的使用情况。
2.2 使用示例
执行如下命令,安装iftop流量监控工具。
yum install iftop -y
执行如下命令,查看详细端口流量占用情况。
iftop -i eth0 -P
说明:-P参数会显示请求端口。
系统显示如下,58690端口占用流量最大。

执行如下命令,查看端口对应的进程。
netstat -tunlp |grep [$Port]
说明:[$Port]为上一步查看的端口。
显示结果主要字段说明:

- 第①部分:带宽使用情况。
- 第②部分:外部连接列表,即记录了哪些IP正在和本机的网络连接。
- 右侧部分是实时流量信息,分别是该访问IP连接到本机2秒、10秒和40秒的平均流量。
=>表示发送数据,<=表示接收数据。
- 第③部分。
- 第一列:TX表示发送流量,RX表示接收流量,TOTAL表示总流量。
- 第二列cum:表示第一列各种情况的总流量。
- 第三列peak:表示第一列各种情况的流量峰值。
- 第四列rates:表示第一列各种情况2秒、10秒、40秒内的平均流量。
3 Nethogs工具的使用
Nethogs是一款开源的网络流量监控工具,可用于显示每个进程的带宽占用情况。这样可以更直观定位异常流量的来源。
3.1 Nethogs命令
常见用法如下。
nethogs [-i interface]
interface表示网络接口名,比如eth0、eth1等。如果不通过-i参数指定接口名,则默认检测第一块网卡的使用情况。
3.2 使用示例
执行如下命令,安装nethogs流量监控工具。
yum install nethogs -y
执行如下命令,查看网卡上进程级的流量信息。
nethogs eth1
说明:nethogs默认的监控间隔是1秒,您可以通过-d参数来设定监控间隔。例如执行如下nethogs eth1 -d 5命令,设定监控间隔为5秒。
系统显示类似如下

显示结果说明:
在nethogs监控界面,按s可以按照Sent列进行排序,按r可以按照Received列进行排序,按m可以切换不同的统计单位显示,例如kb/s、kb、b、mb。监控界面信息说明如下所示。
- PID列表示相应流量关联程序的进程号。
- USER列表示相应进程的所属用户。
- PROGRAM列表示程序的具体执行路径。
- DEV列当前监控的网络接口名称。
- Sent列表示相应进程已经发送的数据流量。
- Received列表示程序已经接收的数据流量。