![std 출력 및 오류 출력을 파일로 비동기적으로 리디렉션 [중복]](https://linux55.com/image/94280/std%20%EC%B6%9C%EB%A0%A5%20%EB%B0%8F%20%EC%98%A4%EB%A5%98%20%EC%B6%9C%EB%A0%A5%EC%9D%84%20%ED%8C%8C%EC%9D%BC%EB%A1%9C%20%EB%B9%84%EB%8F%99%EA%B8%B0%EC%A0%81%EC%9C%BC%EB%A1%9C%20%EB%A6%AC%EB%94%94%EB%A0%89%EC%85%98%20%5B%EC%A4%91%EB%B3%B5%5D.png)
스레드가 있는 일부 프로그램의 출력을 특정 파일로 리디렉션하려고 합니다.
달리기를 시도했지만 달리기를 멈추지 않으면 command > file 2&>1
여전히 비어 있을 것입니다.command
file
출력을 비동기적으로 덤프하는 방법이 있습니까 file
?
Python 조각 예:
import _thread
def run():
raise ValueError('plah')
_thread.start_new_thread(run, ())
while True:
pass
프로그램이 수동으로 중지될 때까지 실행은 python program.py 2> log.txt
출력을 생성하지 않습니다 .log.txt
답변1
출력을 수행하다버퍼링되지 않은. Python을 사용하여 이를 수행하는 쉬운 방법은 다음을 설정하는 것입니다 PYTHONUNBUFFERED
.
PYTHONUNBUFFERED=1 python program.py 2>log.txt
답변2
Python은 기본적으로 출력을 버퍼링합니다. 이러한 상황을 피하기 위해 플래그가 제공되거나 -u
배치 됩니다.PYTHONUNBUFFERED=yes