比 tee 更好的输出到控制台和输出文件的方法?
Better way to output to both console and output file than tee?
我需要显示的是一个周期性刷新的日志。这是一个大约 10 行文本的块。我正在使用 |tee
,它现在可以正常工作。然而,性能不太令人满意。它会等待一段时间,然后从多次刷新中输出几个文本块(尤其是当程序刚刚启动时,需要很长时间才能开始在控制台上显示任何内容,我第一次看到这个时,我以为程序挂了)。另外,它在最后一个块的中间随机断开,所以呈现起来很难看。
有什么办法可以改善吗? (也许每次输出少一点,输出文件和控制台之间切换更频繁?)
假设你可以直接将日志作为文件进行监控[更新:事实并非如此]:
监视 [log] 文件中新行的常用方法是使用 tail -f
,据我所知,它会打印添加到日志文件 中的新数据正在添加,没有缓冲。
类似地,tee
传递通过 stdin 接收的数据而无需缓冲。
因此,您应该能够将两者结合起来:
tail -f logFile | tee newLogEntriesFile
通过在打印每个块后刷新 stdout 解决。感谢 Kenneth L!
https://superuser.com/questions/889019/bash-better-way-to-output-to-both-console-and-output-file-than-tee
我需要显示的是一个周期性刷新的日志。这是一个大约 10 行文本的块。我正在使用 |tee
,它现在可以正常工作。然而,性能不太令人满意。它会等待一段时间,然后从多次刷新中输出几个文本块(尤其是当程序刚刚启动时,需要很长时间才能开始在控制台上显示任何内容,我第一次看到这个时,我以为程序挂了)。另外,它在最后一个块的中间随机断开,所以呈现起来很难看。
有什么办法可以改善吗? (也许每次输出少一点,输出文件和控制台之间切换更频繁?)
假设你可以直接将日志作为文件进行监控[更新:事实并非如此]:
监视 [log] 文件中新行的常用方法是使用 tail -f
,据我所知,它会打印添加到日志文件 中的新数据正在添加,没有缓冲。
类似地,tee
传递通过 stdin 接收的数据而无需缓冲。
因此,您应该能够将两者结合起来:
tail -f logFile | tee newLogEntriesFile
通过在打印每个块后刷新 stdout 解决。感谢 Kenneth L! https://superuser.com/questions/889019/bash-better-way-to-output-to-both-console-and-output-file-than-tee