连续将终端输出写入文本文件

连续将终端输出写入文本文件

我正在终端中运行一个小型 cli python 应用程序。它无限循环并将​​文本输出到终端。我想将文本输出到文件中,我可以使用以下命令来完成此操作python [my cli app] >> log.txt,但我必须先打破循环,然后才能关闭并有效保存文件。有没有办法在循环在后台运行的同时从文本文件中读取最新内容?

所以基本上:

~ $  [INFINITE LOOP] >> log.txt

然后,当它永远运行时,我想访问log.txt.目前,只有当我使用Ctrl+停止命令时,它才会将终端输出保存到文件中C

我希望这能解释它

答案1

模拟.py:

(每秒输出10行)

#!/usr/bin/env python
import time

i=0
while True:
    print("{} what up {}".format(i,i%10))
    if i%10==9:
        time.sleep(1)
    i+=1

在一个终端中:

$ stdbuf -oL python simulation.py >> log.txt

在另一张中:

$ tail -f log.txt #10 new lines every second

答案2

处理 PSkocik 的答案:

代替

$ stdbuf -oL python simulation.py >> log.txt

$ stdbuf -oL python simulation.py | tee log.txt

这样您就可以在同一屏幕上查看程序的原始输出。

相关内容