Linux如何实时监控网卡流量?

系统 Linux
本文将介绍一个简单的Bash脚本,用于实时监控指定网卡的流量情况。这个脚本通过读取/proc/net/dev文件获取网卡的接收(RX)和发送(TX)字节数,并计算每秒的流量。

本文将介绍一个简单的Bash脚本,用于实时监控指定网卡的流量情况。这个脚本通过读取/proc/net/dev文件获取网卡的接收(RX)和发送(TX)字节数,并计算每秒的流量。脚本不仅能够实时显示流量,还能将字节数转换为更为直观的单位(如KB、MB、GB),便于用户查看。

先看看脚本:

#!/bin/bash
# 设置接口名称
eth="eno1"
# 定义函数:将字节转换为人类可读的单位
bytes_to_human() {
    local bytes=$1
    if (( bytes < 1024 )); then
        echo "${bytes}B"
    elif (( bytes < 1048576 )); then
        printf "%.2fKB" "$(bc <<< "scale=2; $bytes / 1024")"
    elif (( bytes < 1073741824 )); then
        printf "%.2fMB" "$(bc <<< "scale=2; $bytes / 1048576")"
    else
        printf "%.2fGB" "$(bc <<< "scale=2; $bytes / 1073741824")"
    fi
}
# 实时监控流量
while true; do
    # 获取上一次的接收和发送字节数
    RXpre=$(cat /proc/net/dev | grep "$eth:" | awk '{print $2}')
    TXpre=$(cat /proc/net/dev | grep "$eth:" | awk '{print $10}')
    # 等待1秒
    sleep 1
    # 获取当前的接收和发送字节数
    RXnext=$(cat /proc/net/dev | grep "$eth:" | awk '{print $2}')
    TXnext=$(cat /proc/net/dev | grep "$eth:" | awk '{print $10}')
    # 计算差值
    RX=$((RXnext - RXpre))
    TX=$((TXnext - TXpre))
    # 将字节转换为人类可读的单位
    RX_human=$(bytes_to_human $RX)
    TX_human=$(bytes_to_human $TX)
    # 清屏并打印结果
    clear
    echo -e "\t RX `date +%k:%M:%S` TX"
    echo -e "$eth \t $RX_human/s   $TX_human/s"
done

1、脚本功能概述

该脚本实现了实时监控指定网卡(如eno1)的网络流量。它定期读取系统的/proc/net/dev文件,提取网卡的接收和发送字节数,然后计算每秒的流量。流量数据以B/s(字节每秒)、KB/s(千字节每秒)、MB/s(兆字节每秒)或GB/s(千兆字节每秒)等更直观的单位显示。

2、工作原理

  • 接口选择:用户可以通过修改脚本中的eth="eno1"来指定要监控的网卡接口。常见的网卡名称包括eth0、eno1、wlan0等
  • 获取流量数据:脚本通过cat /proc/net/dev命令读取当前网络设备的流量数据。该文件包含了系统所有网卡的接收(RX)和发送(TX)字节数。使用grep命令过滤出指定网卡的信息,并使用awk提取字节数。
  • 计算流量差值:通过每秒读取两次字节数并计算差值(即流量的增量),实现实时流量监控。
  • 字节数转化:脚本通过bytes_to_human函数将字节数转换为更加直观的单位(如KB、MB、GB)
  • 实时显示:每秒更新一次流量,并清屏重新显示,以保持信息的实时性和可读性。

3、如何使用

  • 编辑脚本:打开终端并使用文本编辑器(如nano或vim)创建一个新的脚本文件:
nano monitor_traffic.sh
  • 粘贴脚本:将上述脚本内容粘贴到编辑器中,并保存。
  • 赋予执行权限: 在终端中输入以下命令赋予脚本执行权限:
chmod +x monitor_traffic.sh

运行脚本:执行脚本来开始监控流量:

./monitor_traffic.sh

停止脚本:可以按Ctrl+C停止脚本的执行。

这个简单的Bash脚本能够帮助系统管理员实时监控网络接口的流量情况,并将其以友好的格式显示出来。它可以作为一个基础工具进一步扩展,以满足更多的需求,例如带宽限制、流量分析等。

责任编辑:华轩 来源: 微技术之家
相关推荐

2010-06-17 17:03:31

Linux流量控制

2011-03-30 15:05:19

RedHad安装MRTG

2011-03-30 11:04:11

安装MRTG

2011-03-02 14:25:46

网络拓扑结构数据流量

2021-08-30 13:08:54

Linux实时监控日志文件

2010-06-11 11:28:39

Linux流量监控

2010-05-27 12:52:42

Linux流量监控软件

2011-01-06 13:45:51

linux流量监控iftop

2011-04-06 13:50:34

LinuxMRTG监控

2010-05-26 16:44:27

Linux流量监控

2010-05-27 10:00:34

Linux 网卡流量

2010-01-27 10:01:20

2021-04-02 09:43:10

Linux监控技术Linux系统

2010-06-01 10:32:04

linux Mrtg

2011-04-06 11:36:32

2010-06-13 15:05:01

Linux流量监控

2010-06-07 14:23:40

Linux流量监控

2011-03-31 10:24:15

2010-06-04 13:49:24

Linux流量监控

2010-06-13 14:47:15

点赞
收藏

51CTO技术栈公众号