1

像这样的命令给了我一个关于 CPU 和内存负载到STDOUTtop | grep chromium的时间趋势。我正在尝试将此输出通过管道传输到失败的文件(没有错误,但load.log保持为空)。top | grep chromium >> load.log

  • 问题是时变输出top吗?
  • 如何在不使用外部工具的情况下仅使用 Bash 来解决此问题?
  • 如何调整更新时间?
4

1 回答 1

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

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

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

top | stdbuf -oL grep chromium >> load.log
于 2013-11-13T22:41:54.457 回答