我使用以下命令在后台运行python脚本:
nohup ./cmd.py > cmd.log &
Run Code Online (Sandbox Code Playgroud)
但似乎nohup没有在日志文件中写入任何内容.cmd.log已创建但始终为空.在python脚本中,我使用sys.stdout.write而不是print打印到标准输出.我做错了吗?
vz0*_*vz0 335
您可以使用-u标志运行Python 以避免输出缓冲:
nohup python -u ./cmd.py > cmd.log &
Run Code Online (Sandbox Code Playgroud)
wul*_*ong 91
看起来你需要定期刷新标准输出(例如sys.stdout.flush()).在我的测试中,即使print程序退出,Python也不会自动执行此操作.
Nur*_*hid 28
使用' -u ' 和' nohup '为我工作.一切都将保存在" nohup.out "文件中.像这样-
nohup python -u your_code.py &
Run Code Online (Sandbox Code Playgroud)
Ryu*_*usa 11
export PYTHONUNBUFFERED=1
nohup ./cmd.py > cmd.log &
Run Code Online (Sandbox Code Playgroud)
要么
nohup python -u ./cmd.py > cmd.log &
Run Code Online (Sandbox Code Playgroud)
https://docs.python.org/2/using/cmdline.html#cmdoption-u
Python 3.3 及更高版本有一个 print 参数,这是唯一对我有用的方法。
print("number to train = " + str(num_train), flush=True)
print("Using {} evaluation batches".format(num_evals), flush=True)
Run Code Online (Sandbox Code Playgroud)