Nohup is not writing log to output file
我正在使用以下命令在后台运行python脚本:
1 | nohup ./cmd.py > cmd.log & |
但是看来nohup没有向日志文件写入任何内容。 cmd.log已创建,但始终为空。 在python脚本中,我使用
您可以使用
1 | nohup python -u ./cmd.py > cmd.log & |
看来您需要定期刷新stdout(例如
将'-u'与'nohup'一起使用对我有用。一切都将保存在" nohup.out"文件中。像这样-
1 | nohup python -u your_code.py & |
您也可以将其保存到目录中。这条路-
1 | nohup python -u your_code.py > your_directory/nohup.out & |
1 2 | export PYTHONUNBUFFERED=1 nohup ./cmd.py > cmd.log & |
要么
1 | nohup python -u ./cmd.py > cmd.log & |
https://docs.python.org/2/using/cmdline.html#cmdoption-u
Python 3.3及更高版本有一个flush参数用于打印,这是唯一对我有用的方法。
1 2 | print("number to train =" + str(num_train), flush=True) print("Using {} evaluation batches".format(num_evals), flush=True) |
我有一个类似的问题,但未与Python进程关联。我正在运行一个脚本,该脚本执行了nohup,并且该脚本通过cron定期运行。
我可以通过以下方法解决问题:
PS:我的脚本是用RHEL上的ksh编写