보통 특정 프로그램이 터미널을 닫고 나서도 백그라운드에서 돌아가게 하고 싶으면 nohup과 &를 조합해서 쓰곤 하는데, 가끔 stdout/stderr 메시지들이 로그 파일에 제대로 저장되지 않는 경우가 있다.
원인을 좀 찾아보니 프로그램 혹은 언어 단에서 표준출력에 대해 flush를 하지 않으면 그렇게 된다고 하는데…
1 |
nohup stdbuf -i0 -o0 -e0 ./실행할프로그램 >> 로그파일이름.log 2>&1 & |
출처: https://stackoverflow.com/a/60503317/4183595
이렇게 stdbuf를 섞어서 실행하면 로그파일에 정상적으로 stdout과 stderr 메시지들이 저장된다.
빈 텍스트 파일에 저 명령어를 복붙하고 .sh 확장자로 저장한 다음에 chmod +x로 실행권한을 주면 쉽게 실행할 수 있는 쉘 파일을 만들 수 있으니 참고하세용~