awk中怎么在后台巡检中实时计算当前磁盘IO的读写服务速率

雨雪吖_3084

雨雪吖_3084

2026-07-23

826人浏览

原创

awk无法单独实时计算磁盘io服务速率,必须结合/proc/diskstats数据源、时间差计算和循环刷新机制;其作用限于解析、差值计算与格式化输出,需配合shell while循环和sleep实现后台巡检。

awk中怎么在后台巡检中实时计算当前磁盘io的读写服务速率

直接用 awk 单独“实时计算磁盘 IO 读写服务速率”并不现实——因为 awk 本身不采集数据,它只做文本处理。真正起作用的是底层指标源(如 /proc/diskstats)+ 时间差计算逻辑 + 循环刷新机制。awk 在这里扮演的是解析、差值计算和格式化输出的角色,需配合 while 循环和 sleep 才能实现“后台巡检”。

下面给出实用、低开销、无需 root 的方案,聚焦“服务速率”(即每秒完成的 I/O 操作数:IOPS),而非吞吐量(MB/s):


1. 理解核心指标来源:/proc/diskstats

/proc/diskstats 每行含 14 列,对单块磁盘(如 sda)关键列含义如下(按空格分隔):

  • 第 4 列:读完成次数(reads_completed)
  • 第 8 列:写完成次数(writes_completed)
  • 第 3 列:读扇区数(512 字节/扇区)→ 可换算为 KB
  • 第 7 列:写扇区数 → 同样可换算

⚠️ 注意:/proc/diskstats 是累计值,必须取两次快照、做差、除以时间间隔才能得“每秒速率”。


2. 用 awk + shell 实现后台巡检脚本(推荐)

以下脚本每 1 秒采样一次,输出 sda 的 读 IOPS、写 IOPS、读 KB/s、写 KB/s,后台运行且无依赖:

小橡皮
小橡皮

小橡皮是一款内容运营工具,AI内容一键变人味,发布前风险检测。

下载
#!/bin/bash
DEV="sda"
INTERVAL=1

# 首次采样
read -r r1 w1 rk1 wk1 /dev/null)
[ -z "$r1" ] && { echo "设备 $DEV 未找到"; exit 1; }

while true; do
  sleep "$INTERVAL"
  read -r r2 w2 rk2 wk2 /dev/null)
  [ -z "$r2" ] && continue

  r_iops=$(( (r2 - r1) / INTERVAL ))
  w_iops=$(( (w2 - w1) / INTERVAL ))
  rk_per_sec=$(( (rk2 - rk1) * 512 / 1024 / INTERVAL ))  # 转 KB/s
  wk_per_sec=$(( (wk2 - wk1) * 512 / 1024 / INTERVAL ))

  printf "%s | rIOPS=%d wIOPS=%d | rKB/s=%d wKB/s=%d\n" \
    "$(date +%H:%M:%S)" "$r_iops" "$w_iops" "$rk_per_sec" "$wk_per_sec"

  r1=$r2; w1=$w2; rk1=$rk2; wk1=$wk2
done

✅ 特点:

  • 不依赖 iostat 或 sysstat,纯内核接口,容器里也能跑
  • 输出带时间戳,适合日志留存或管道进监控系统(如 | grep 'wIOPS>1000')
  • 计算逻辑清晰,避免浮点(awk 做整数差值更稳)

3. 简化版单行命令(适合快速验证)

想一秒看当前速率?用这个组合(需两次采样,手动触发):

# 第一次快照(保存到文件)
awk '$3=="sda"{print $4,$8,$3,$7}' /proc/diskstats > /tmp/disk1

# 等 1 秒后第二次快照并计算
sleep 1
awk '$3=="sda"{print $4,$8,$3,$7}' /proc/diskstats | \
  awk 'NR==FNR{r1=$1;w1=$2;rk1=$3;wk1=$4;next} {r2=$1;w2=$2;rk2=$3;wk2=$4; print "rIOPS:",(r2-r1), "wIOPS:",(w2-w1), "rKB/s:",int((rk2-rk1)*512/1024), "wKB/s:",int((wk2-wk1)*512/1024)}' /tmp/disk1 -

4. 如果你真要用纯 awk 循环(不推荐但可行)

GNU awk 支持 system("sleep 1") 和 BEGINFILE/ENDFILE,但跨平台兼容性差,且 sleep 在 awk 中阻塞不可控。更稳妥做法仍是 shell 控制节奏,awk 只管算——这是运维场景下的事实标准。

不复杂但容易忽略:/proc/diskstats 中设备名可能带前缀(如 nvme0n1 或 dm-0),务必用 lsblk -d -o NAME,TYPE | grep disk 确认真实设备名,再替换脚本中的 DEV。


相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
服务器是什么
服务器是什么

服务器是一种计算机硬件设备或软件程序,它具有强大的计算和存储能力,用请求、存储数据和提供服务。它在互联网中着关重要的作用,为用户提供各种服务和资源。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.15

457

5

连接apple id服务器时出错
连接apple id服务器时出错

连接apple id服务器时出错的原因包括网络连接问题、服务器问题、Apple ID账户问题、设备问题、防火墙或安全软件问题、时间和日期设置问题、Apple服务器维护等。本专题为大家提供apple id相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.08

940

5

搭建互联网服务器
搭建互联网服务器

搭建互联网服务器需要:1、选择合适的硬件和操作系统,第一步是选择合适的硬件和操作系统;2、安装和配置操作系统,是搭建互联网服务器的关键步骤;3、安装和配置服务器软件,是搭建互联网服务器的下一步,常见的服务器软件包括Apache、Nginx、Tomcat等;4、配置防火墙和安全性,是搭建互联网服务器的重要步骤;5、域名解析和配置,是搭建互联网服务器的最后一步。

2023.09.19

3012

5

如何查看服务器状态
如何查看服务器状态

查看服务器状态的方法有使用命令行工具、图形界面工具、监控工具、日志文件和远程管理工具等。本专题为大家提供服务器状态相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.09

996

5

服务器域名转接慢怎么解决
服务器域名转接慢怎么解决

服务器域名转接慢的解决办法有DNS优化、服务器优化、CDN加速、前端优化和网络优化等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.17

889

5

服务器评测软件
服务器评测软件

服务器评测软件有PassMark Software、CPU-Z、GPU-Z、CrystalDiskMark、IOmeter、JMeter、LoadRunner、Apache Bench等等。详细介绍:1、PassMark Software是一款综合性的服务器性能测试软件,可以评估服务器在各种负载条件下的性能;2、CPU-Z是一款可以提供服务器CPU详细信息的软件等等。

2023.10.17

454

3

如何开启TFTP服务器
如何开启TFTP服务器

开启TFTP服务器的步骤包括选择TFTP服务器软件、下载和安装软件、配置TFTP服务器以及启动和测试服务器等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.18

2736

4

服务器负载不兼容怎么解决
服务器负载不兼容怎么解决

解决方法:1、增加服务器资源;2、负载均衡;3、优化应用程序;4、增加缓存机制;5、分布式架构;6、限流和熔断;7、自动化扩容。想知道更详细服务器负载不兼容的解决方法,可以访问本专题下面的文章。

2023.10.20

5112

4

宽带如何接入服务器
宽带如何接入服务器

宽带接入服务器的方法有ADSL宽带接入服务器、光纤接入服务器、无线接入服务器和以太网接入服务器等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.20

807

5

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Linux开发篇视频教程
Linux开发篇视频教程

共18课时 | 4.6万人学习

Perl 入门教程
Perl 入门教程

共29课时 | 31.3万人学习

Perl 入门教程
Perl 入门教程

共29课时 | 31.3万人学习