在文件中保存CPU /内存趋势

时间:2013-11-13 22:36:36

标签: bash process pipe io-redirection

top | grep chromium这样的命令让我对CPU和内存负载的时间趋势为 STDOUT 。我试图将此输出传递给top | grep chromium >> load.log失败的文件(没有错误,但 load.log 保持为空)。

  • 问题是时间变化top
  • 的输出
  • 如果不使用仅使用Bash的外部工具,如何解决此问题?
  • 如何调整更新时间?

1 个答案:

答案 0 :(得分:2)

top | grep --line-buffered chromium >> load.log

当grep写入tty时,其输出是行缓冲的。当它被重定向到文件时,它的输出被完全缓冲,这意味着它只刷新每4096个字节。 --line-buffered选项会覆盖此行为,强制它在每行后刷新stdout。

此行为并非grep独有;任何使用libc的标准C程序都会发生这种情况。您可以使用stdbuf强制任意程序进行行缓冲。

top | stdbuf -oL grep chromium >> load.log