2014-02-27 145 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),所以如果您等待足夠長的時間輸出被刷新到文件中,它將不再爲空。