5

我是使用tee命令的新手。

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

但问题是tee直到我的命令结束才将输出转发到 shell。有什么办法吗?

我正在使用 Debian 和bash.

4

3 回答 3

3

这实际上取决于输出量和您正在运行的任何命令的实现。没有程序有义务直接打印东西stdout或一直stderr冲洗它。因此,即使大多数 C 运行时实现在使用运行时例程之一写入一定数量的数据后刷新,但printf根据实现,这可能不是真的。

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

于 2012-05-22T21:33:22.597 回答
1

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

stdbuf - 运行 COMMAND,并为其标准流修改缓冲操作。

于 2012-05-22T21:44:31.160 回答
0

如果您要发布您的用法,我可以给出更好的答案,但事实上

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

是正确使用 tee 命令并且似乎有效。用您的命令替换管道之前的部分,您应该一切顺利。

于 2012-05-22T21:33:07.980 回答