我使用下面的命令在后台运行一个python脚本:NOHUP不写日志输出文件
nohup ./cmd.py > cmd.log &
但看来,nohup的不写任何东西到日志文件。 cmd.log已创建,但始终为空。在python脚本中,我使用sys.stdout.write
而不是print
来打印到标准输出。我做错了什么?
我使用下面的命令在后台运行一个python脚本:NOHUP不写日志输出文件
nohup ./cmd.py > cmd.log &
但看来,nohup的不写任何东西到日志文件。 cmd.log已创建,但始终为空。在python脚本中,我使用sys.stdout.write
而不是print
来打印到标准输出。我做错了什么?
你可以用-u
标志运行Python避免输出缓冲:
nohup python -u ./cmd.py > cmd.log &
这样更好!非常感谢:) – Sadjad
这会是一个性能问题吗? – kommradHomer
@kommradHomer我猜这取决于你的程序产生的stdout/stderr的输出量。 – vz0
export PYTHONUNBUFFERED=1
nohup ./cmd.py > cmd.log &
或
nohup python -u ./cmd.py > cmd.log &
你使用了哪种“nohup”变种? BSD版本写入当前目录中的一个名为'nohup.out'的文件(或者如果当前目录不可写,则为'$ HOME/nohup.out')。我没有看到改变输出文件名的方法... – wulong
@wulong这只是如果标准输出是一个终端。 –
我也试过了没有重定向的命令,它根本没有创建nohup.out文件。我不知道它是哪个版本,但如果有帮助的话,我在SunOS 5.10上。 – ezbentley