我是使用tee
命令的新手。
我正在尝试运行我的一个程序,这需要很长时间才能完成,但它会随着它的进展打印出信息。我正在使用'tee'将输出保存到文件中以及查看shell中的输出(bash
)。
但问题是tee
在我的命令结束之前不会将输出转发给shell。
有没有办法做到这一点?
我正在使用Debian和bash
。
答案 0 :(得分:3)
这实际上取决于输出量和正在运行的任何命令的实现。没有程序有义务直接将内容打印到stdout
或stderr
并一直刷新。因此,即使大多数C运行时实现在使用其中一个运行时例程(例如printf
)写入一定数量的数据后刷新,但这可能不是真的,具体取决于实现。
它tee
不立即输出,它可能只在命令运行的最后接收输入。 可能有助于提及它的确切命令。
答案 1 :(得分:1)
您遇到的问题很可能与缓冲有关。 您可以查看stdbuf命令,该命令执行以下操作:
stdbuf - 运行COMMAND,对其标准流进行修改的缓冲操作。
答案 2 :(得分:0)
如果您要发布您的用法,我可以给出更好的答案,但因为它是
(for i in `seq 10`; do echo $i; sleep 1s; done) | tee ./tmp
正确使用tee命令并且似乎有效。用你的命令更换管道前的部件,你应该好好去。