터미널에서 작은 cli Python 애플리케이션을 실행 중입니다. 무한히 반복되어 터미널에 텍스트를 출력합니다. 텍스트를 파일로 출력하고 싶습니다. 다음 명령을 사용하여 이 작업을 수행할 수 있지만 python [my cli app] >> log.txt
파일을 닫고 효과적으로 저장하려면 루프를 중단해야 합니다. 루프가 백그라운드에서 실행되는 동안 텍스트 파일에서 최신 콘텐츠를 읽을 수 있는 방법이 있습니까?
그래서 기본적으로:
~ $ [INFINITE LOOP] >> log.txt
그런 다음 영원히 실행되는 동안 에 액세스하려고 합니다 log.txt
. 현재는 Ctrl+stop 명령을 사용할 때만 터미널 출력을 파일에 저장합니다 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
이를 통해 동일한 화면에서 프로그램의 원시 출력을 볼 수 있습니다.