2014-02-27 146 views
1

为什么iostat的输出不重定向到文件中的以下命令:iostat的重定向输出到文件

iostat -x 3 | awk '/sda/ { print $11, $12}' > /tmp/disk_utilization 

是iostat的行为不同于任何其他命令?提前

+0

我的iostat版本没有'-x'标志。否则我无法再现这个问题。 – kojiro

+0

在Mac OSX上也是如此。 –

+0

小次郎和马克,你们如何阻止iostat? CTRL + C?你看到文件重定向到的东西吗? –

回答

3

THX看起来你需要添加一个计数告诉流时终止(man iostat)。你只需要添加的时间间隔:

If the interval parameter is specified without the count parameter, the iostat command generates reports continuously. 

当我尝试:

iostat -x 3 6 | awk '/sda/ { print $11, $12}' > outfile 

6告诉iostat后3秒间隔6次迭代停止。迭代iostat完成后,我得到一个output文件。

或者,您可以选择一些表达式来导致awk脚本退出。当我尝试:

iostat -x 3 | awk -v max=10 '/sda/ { print $11, $12; max++ } NR > max { exit } ' > outfile2 

我得到的只是3线output2这是有意义的,因为iostat -x生产约一个屏幕值得行输出到屏幕。

你也可能会迫使awk来fflush(stdout)在每个印刷周期:

iostat -x 3 | awk '/sda/ { print $11, $12; fflush(stdout) }' > output3 

然后关闭iostat,从壳体一个<ctrl+c>

0

问题的原因是管道被缓冲(可能为4k),所以如果您等待足够长的时间输出被刷新到文件中,它将不再为空。