像这样的命令给了我一个关于 CPU 和内存负载到STDOUTtop | grep chromium
的时间趋势。我正在尝试将此输出通过管道传输到失败的文件(没有错误,但load.log保持为空)。top | grep chromium >> load.log
- 问题是时变输出
top
吗? - 如何在不使用外部工具的情况下仅使用 Bash 来解决此问题?
- 如何调整更新时间?
像这样的命令给了我一个关于 CPU 和内存负载到STDOUTtop | grep chromium
的时间趋势。我正在尝试将此输出通过管道传输到失败的文件(没有错误,但load.log保持为空)。top | grep chromium >> load.log
top
吗?top | grep --line-buffered chromium >> load.log
当 grep 写入 tty 时,它的输出是行缓冲的。当它被重定向到一个文件时,它的输出是完全缓冲的,这意味着它只每 4096 个字节刷新一次。该--line-buffered
选项会覆盖此行为,强制它在每行之后刷新标准输出。
这种行为并不是 grep 独有的;任何使用 libc 的标准 C 程序都可能发生这种情况。您可以使用stdbuf
强制对任意程序进行行缓冲。
top | stdbuf -oL grep chromium >> load.log