用于在Linux上监视磁盘i/o速率的脚本
我需要一个用于使用bash、awk、sed监视Linux上所有磁盘I/o速率的工具。问题是它必须在每个时间间隔返回一行(因此这一行应该包含:用于在Linux上监视磁盘i/o速率的脚本,linux,bash,awk,disk,iostat,Linux,Bash,Awk,Disk,Iostat,我需要一个用于使用bash、awk、sed监视Linux上所有磁盘I/o速率的工具。问题是它必须在每个时间间隔返回一行(因此这一行应该包含:tps,kB\u-read/s,kB\u-wrtn/s,kB\u-read,kB\u-wrtn,但按所有磁盘汇总)。 当然,这里的自然选择是: -d -k -p $interval $loops 要将其限制到我使用的所有磁盘,请执行以下操作: -d -k -p `parted -l | grep Disk | cut -f1 -d: | cut -f2
tps
,kB\u-read/s
,kB\u-wrtn/s
,kB\u-read
,kB\u-wrtn
,但按所有磁盘汇总)。
当然,这里的自然选择是:
-d -k -p $interval $loops
要将其限制到我使用的所有磁盘,请执行以下操作:
-d -k -p `parted -l | grep Disk | cut -f1 -d: | cut -f2 -d' '`
现在总结列的好技巧是:
-d -k -p `parted -l | grep Disk | cut -f1 -d: | cut -f2 -d' '` > /tmp/jPtafDiskIO.txt
echo `date +"%H:%M:%S"`,`awk 'FNR>2' /tmp/jPtafDiskIO.txt | awk 'BEGIN {FS=OFS=" "}NR == 1 { n1 = $2; n2 = $3; n3 = $4; n4 = $5; n5 = $6; next } { n1 += $2; n2 += $3; n3 += $4; n4 += $5; n5 += $6 } END { print n1","n2","n3","n4","n5 }'` >> diskIO.log
我就快到了,但是这(在循环中运行)使得每次从一开始就被调用,所以我不会从一个间隔到另一个间隔得到统计数据,而是总是平均值(所以每次调用都会给我带来几乎相同的输出)
我知道这听起来很复杂,但也许有人有主意?也许完全不同的方法?
Thx
编辑:
示例输入(/tmp/jPtafDiskIO.txt):
输出diskIO.log:
16:53:12,54.43,65.2,580.37,2412282496,21471160238
为什么不使用
iotop
?为什么不使用iotop
?dstat
可能就是您想要的。它有很多可以报告的内容,默认情况下会显示一些常见的内容。dstat
可能就是您要查找的内容。它有很多可以报告的内容,默认情况下会显示一些常见的内容。您可以提供示例输入和示例输出吗?您可以提供示例输入和示例输出吗?因为我需要在文本文件中记录输出。IOtop仅显示AFAIK的连续输出。您可以使IOtop
以批处理模式运行以保存其输出。例如:iotop-bto--iter=1
,因为我需要在文本文件中记录输出。IOtop仅显示AFAIK的连续输出。您可以使IOtop
以批处理模式运行以保存其输出。例如:iotop-bto--iter=1
16:53:12,54.43,65.2,580.37,2412282496,21471160238