Linux 怎么使用 awk 提取网络接口的流量数据

酷丽吖_4133

酷丽吖_4133

2026-08-15

997人浏览

原创

最轻量准确的方式是直接读取/proc/net/dev并用awk按字段位置提取:第2列rx_packets、第10列tx_packets、第3列rx_bytes、第11列tx_bytes,需跳过标题行且适配空格不固定格式。

linux 怎么使用 awk 提取网络接口的流量数据

直接读取 /proc/net/dev 并用 awk 提取指定接口的收发包数或字节数,是最轻量、最准确的方式——不依赖第三方工具,无采样延迟,数据来自内核实时统计。

提取指定网卡的接收/发送包总数

/proc/net/dev 的第二列是接收包总数(rx_packets),第十列是发送包总数(tx_packets)。注意:首行是标题,字段间空格不固定,必须靠字段位置而非固定分隔符识别。

  • 提取 ens33 的收发包数:
    awk '/ens33/ {print "RX:", $2, "TX:", $10}' /proc/net/dev
  • 只输出数字,方便脚本后续处理:
    awk '/ens33/ {print $2, $10}' /proc/net/dev
  • 若接口名含空格或特殊字符(如 docker0),建议用正则锚定开头:
    awk '$1 ~ /^docker0:/ {print $2, $10}' /proc/net/dev

提取接收/发送字节数(更常用的实际流量)

第三列是接收字节数(rx_bytes),第十一列是发送字节数(tx_bytes)。这两项常用于计算带宽(bps)或绘图。

Linux installer
Linux installer

先解析安全源,运行本地CLI安装、启动、卸载Linux桌面应用。用户请求时使用。

下载
  • 快速获取 eth0 当前字节数:
    awk '/eth0/ {print "RX_BYTES:", $3, "TX_BYTES:", $11}' /proc/net/dev
  • 去掉单位和标签,纯数字一行输出:
    awk '/eth0/ {print $3, $11}' /proc/net/dev
  • 配合 printf 格式化为 KB/MB(需 shell 层处理):
    awk '/eth0/ {rx=$3/1024; tx=$11/1024; printf "RX: %.1f KB, TX: %.1f KB\n", rx, tx}' /proc/net/dev

做两次快照计算实时速率

单次读取只能得累计值;要算每秒流量,需间隔 1 秒读两次,相减再除以时间差。

  • 简单 shell + awk 实现 1 秒速率估算:
    old=($(awk '/eth0/ {print $3, $11}' /proc/net/dev)); sleep 1; new=($(awk '/eth0/ {print $3, $11}' /proc/net/dev)); echo "RX: $((${new[0]}-${old[0]})) B/s, TX: $((${new[1]}-${old[1]})) B/s"
  • 更健壮的做法:用 awk 自身记录上一次值(需写入临时文件或用 NR==FNR 技巧),但对简单监控,shell 变量已够用
  • 注意溢出:计数器是无符号 32 位或 64 位整数,若差值为负,说明发生回绕,需按模处理(实际在现代系统中极少发生)

过滤并格式化多接口输出

想一次性看所有物理网卡(排除 lo、veth*、docker0 等虚拟接口),可用 awk 条件过滤 + 整齐排版。

  • 列出所有非回环、非虚拟的网卡及其当前 RX/TX 字节数:
    awk '$1 !~ /^(lo|virbr|veth|docker|br-)/ && NF>10 {gsub(/:/,"",$1); printf "%-10s %12s %12s\n", $1, $3, $11}' /proc/net/dev
  • 加单位缩写(KB/MB)并自动换算:
    awk '$1 !~ /^lo:/ && NF>10 {gsub(/:/,"",$1); rx=$3; tx=$11; rxf=(rx

相关专题

更多
磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

2023.06.21

3870

4

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

2023.06.29

3313

10

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

2023.06.30

2453

5

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

2023.07.05

5910

7

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

2023.07.06

5562

7

linux查看文件夹大小
linux查看文件夹大小

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。linux怎么查看文件夹大小呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.20

3273

8

linux查看ip命令
linux查看ip命令

本专题为大家提供linux查看ip命令相关文章内容,感兴趣的朋友可以免费下载体验试试。

2023.07.20

2765

4

linux查看cpu使用率
linux查看cpu使用率

在linux的系统维护中,可能需要经常查看cpu使用率,分析系统整体的运行情况。本专题为大家带来了linux查看cpu使用率的相关文章,感兴趣的朋友千万不要错过了。

2023.07.25

2999

6

linux查找文件命令
linux查找文件命令

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.31

277

3

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习