为什么iostat的输出没有重定向到以下命令中的文件:
iostat -x 3 | awk '/sda/ { print $11, $12}' > /tmp/disk_utilization iostat的行为是否与任何其他命令不同?
Thx预先
发布于 2014-02-27 15:12:02
看起来您需要添加一个计数来告诉流何时终止( 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}' > outfile6告诉iostat在3秒钟的6次迭代之后停止。迭代之后,iostat完成,我得到一个output文件。
或者,您可以选择某个表达式来使awk脚本退出。当我尝试:
iostat -x 3 | awk -v max=10 '/sda/ { print $11, $12; max++ } NR > max { exit } ' > outfile2我在output2中只有3行,这是有意义的,因为iostat -x产生了大约一行输出到屏幕的屏幕。
您还可以在每个打印周期中强制awk到fflush(stdout):
iostat -x 3 | awk '/sda/ { print $11, $12; fflush(stdout) }' > output3然后从外壳中用一个iostat关闭<ctrl+c>。
发布于 2014-02-27 15:18:38
造成问题的原因是管道被缓冲(可能是4k),所以如果等待足够长的时间将输出刷新到文件,它将不再是空的。
https://stackoverflow.com/questions/22071817
复制相似问题