非常具体的iostat输出需要实时

有没有办法得到iostat -m的输出,并实时添加扩展输出的等待列? 我知道这个问题听起来不错,但我需要能够实时得到所有这些列而不输出到文件或运行iostat两次,因为这会产生误导性的结果。 这是centos 6.2 iostat 9.0.4。 内核2.6.36.4。 所以总结我需要这个。

Device: tps MB_read/s MB_wrtn/s MB_read MB_wrtn sda 0.56 0.00 0.00 324 485 

我需要添加await,所以它看起来像这样。

 Device: tps MB_read/s MB_wrtn/s MB_read MB_wrtn await sda 0.56 0.00 0.00 324 485 10.72 

我在做梦吗? 我是在看这个错误的方式? 我是否需要编译自己的iostat?

提前致谢。

我不知道如何获得您正在寻找的iostat格式。 但是,我用于此类监控的工具可定制到可以显示相关字段的位置。 生成重放和graphics用途的数据也非常好。

我使用Collectl监控 (通过yum在CentOS中提供), 磁盘检查标志应该给你你所需要的:

 collectl -sD --dskfilt sda 

示例输出(您可以更改打印的单位和列):

 collectl -sD --dskfilt sdb waiting for 1 second sample... # DISK STATISTICS (/sec) # <---------reads---------><---------writes---------><--------averages--------> Pct #Name KBytes Merged IOs Size KBytes Merged IOs Size RWSize QLen Wait SvcTim Util sdb 0 0 0 0 336 0 52 6 6 0 0 0 1 sdb 16 0 1 16 389 1 52 7 7 0 0 0 3 sdb 0 0 0 0 1236 9 109 11 11 0 0 0 0 sdb 16 0 1 16 676 3 140 5 4 0 1 1 14 sdb 0 0 0 0 64 1 16 4 4 0 2 1 2 

为什么不在bash中创build一个包装?

单线版本将如下所示:

 iostat 1 2 | grep -w sda | tail -1 | awk {'print $7'} 

这将运行iostat两次,并返回正确的值await(这是第7列)

您可以通过将右列传递给awk来获得整个CPU iowait来完成vmstat。 例如 :

 vmstat 1 2 | tail -1 | awk {'print $16'} 

请注意,iostat和vmstat在每个Linux发行版上都不同,您必须select正确的列。

这似乎是应该与munin,石墨等monitorable。

编辑 :如果你的系统有watch ,你可以设置iostat自动运行给定的(或无限次重复)次数,与运行之间的指定的差距! awk你真正想要的领域!

如果作者正在寻找实时信息,重新阅读原始问题,我同意collectl是要走的路。 这就是我写这个的原因。 ;)

如果有一些特定的事情要处理,或许我可以帮忙,但是我需要知道更多。 至于你想如何实时,你可以select任何你喜欢的亚秒监视间隔。

-标记