最終的にここで最小の問題は、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を設定するとどうなりますか?