궁극적으로 여기서 최소한의 문제는 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을 설정 하면 어떻게 되나요?