我有一个长时间运行的批处理过程,它将一些调试和进程信息
输出到stdout.
如果我只是从一个终端运行,我可以跟踪’它在哪里’,但随后数据变得太多并滚动屏幕.
如果我重定向到输出文件’> out.txt’我最终获得了整个输出,但它被缓冲,所以我现在再也看不到它在做什么了.
有没有办法重定向输出,但使其不缓冲其写入?
您可以使用C中的setvbuf
调用显式设置标准流的缓冲选项(请参阅
this link),但如果您尝试
修改现有程序的行为,请尝试
stdbuf
(显然是从版本7.5开始的coreutils的一部分).
这会将stdout缓冲到一行:
stdbuf -oL command > output
这会完全禁用stdout缓冲:
stdbuf -o0 command > output