即使对于一个命令,也要立即使用tee命令

时间:2012-05-22 21:28:05

标签: linux tee

我是使用tee命令的新手。

我正在尝试运行我的一个程序,这需要很长时间才能完成,但它会随着它的进展打印出信息。我正在使用'tee'将输出保存到文件中以及查看shell中的输出(bash)。

但问题是tee在我的命令结束之前不会将输出转发给shell。 有没有办法做到这一点?

我正在使用Debian和bash

3 个答案:

答案 0 :(得分:3)

这实际上取决于输出量和正在运行的任何命令的实现。没有程序有义务直接将内容打印到stdoutstderr并一直刷新。因此,即使大多数C运行时实现在使用其中一个运行时例程(例如printf)写入一定数量的数据后刷新,但这可能不是真的,具体取决于实现。

tee不立即输出,它可能只在命令运行的最后接收输入。 可能有助于提及它的确切命令。

答案 1 :(得分:1)

您遇到的问题很可能与缓冲有关。 您可以查看stdbuf命令,该命令执行以下操作:

stdbuf - 运行COMMAND,对其标准流进行修改的缓冲操作。

答案 2 :(得分:0)

如果您要发布您的用法,我可以给出更好的答案,但因为它是

(for i in `seq 10`; do echo $i; sleep 1s; done) | tee ./tmp

正确使用tee命令并且似乎有效。用你的命令更换管道前的部件,你应该好好去。