我正在终端中运行一个小型 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
这样您就可以在同一屏幕上查看程序的原始输出。