본문 바로가기
조각 메모/개발을 위한 도구

터미널 출력을 화면과 파일에 쓰기 tee

by 테크 셰르파 2022. 8. 11.

썸네일: 터미널 출력을 화면과 파일에 쓰기

 

리눅스에서 프로그램을 시작하면 상당히 많은 정보가 화면에 출력됩니다. 디버그 과정에서 원하는 메시지를 보고 싶지만 너무 빨리 지나가기 때문에 모든 출력을 파일에 저장하는 것이 필요합니다.

일반적으로 사용하는 것은 >> 명령어 입니다.

$ test.app >> log.txt   # 출력되는 내용이 log.txt에 저장. 화면에는 아무것도 나오지 않음

출력되는 정보를 화면으로 출력하면서 동시에 파일에 쓰기 위해서는 tee 명령어를 사용하면 됩니다.

$ test.app | tee log.txt

그런데 파이썬에서는 tee 명령어가 동작하지 않습니다. 이를 해결 하기 위해 우리는 파이썬의 -u 옵션을 추가해야 합니다.

$ python -u test.py | tee log.txt

참고사항(man python)

-u     Force stdin, stdout and stderr to  be  totally  unbuffered.   On  systems
       where it matters, also put stdin, stdout and stderr in binary mode.  Note
       that there is internal buffering in xreadlines(), readlines()  and  file-
       object  iterators  ("for  line  in sys.stdin") which is not influenced by
       this option.  To work around this, you will want to use  "sys.stdin.read‐
       line()" inside a "while 1:" loop.

댓글