Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于在Linux上监视磁盘i/o速率的脚本_Linux_Bash_Awk_Disk_Iostat - Fatal编程技术网

用于在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

我需要一个用于使用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 -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