nohup nohup.out이 업데이트되지 않았습니다.

nohup nohup.out이 업데이트되지 않았습니다.

궁극적으로 여기서 최소한의 문제는 Linux에서 nohup을 사용하여 실행하려는 간단한 Python 스크립트입니다. Linux에서는 다음 명령을 사용하여 실행합니다.

 nohup python test.py &

이 명령은 아무 작업도 수행하지 않는 것처럼 보이며 nohup.out에 아무 것도 추가되지 않습니다. "&" 없이 실행하면 출력이 터미널 창에 올바르게 표시됩니다. 내가 무엇을 놓치고 있나요?

 import time

 def test():
   while(True):
     print "Woke up!"
     time.sleep(5)

 if __name__ == "__main__":
    test()

답변1

명령을 사용하여 실행해 보세요 nohup python -u test.py &. 이렇게 하면 출력이 버퍼링되지 않게 됩니다.

이 옵션을 사용하여 첫 번째 줄에 Bang 경로를 추가하면 스크립트를 실행 가능하게 만들 수 있습니다 -u. 또한 명령을 사용하여 실행 가능 비트를 설정해야 합니다 chmod +x test.py.

#!/usr/bin/python -u
import time
....

그런 다음 nohup test.py &.

답변2

블록 기반 I/O 버퍼링인 것 같습니다. setvbuf(3)표준 출력에서 ​​라인 기반 또는 버퍼링되지 않은 출력에 해당하는 Python을 설정 하면 어떻게 되나요?

관련 정보