我在linux服务器上运行一个python脚本,其中包含nohup:
nohup python3 ./myscript.py > ./mylog.log &
它工作,脚本写日志文件,但问题是python错误消息/抛出的异常似乎没有写入日志文件。我怎么能做到这一点?
这与stderr有关吗? (但是当我启动脚本时,它说:“nohup:将stderr重定向到stdout”。)
这是一个长时间运行的脚本,过了一段时间后,由于某些问题并且缺少错误消息,脚本会停止工作,我不知道为什么。问题总是在几天之后发生,所以调试真的很麻烦。
编辑: 这可能与同花顺有关吗?由于我自己的打印使用了flush,但是python错误可能没有,所以一旦脚本中止它们就不会显示在文件中?
答案 0 :(得分:9)
我找到了原因。这真的是缓冲问题(见上面的编辑)。 :)
nohup python3 -u ./myscript.py > ./mylog.log &
使用python -u参数可以正常工作。它禁用缓冲。
现在我可以去寻找虫子......
答案 1 :(得分:2)
您只是重定向stdout。错误消息在stderr上给出。像这样重新运行你的脚本:
nohup python3 ./myscript.py &> ./mylog.log &
&>
将所有输出(stdout和stderr)重定向到您的日志文件。
答案 2 :(得分:0)
使用nohup,除非您将错误日志专门重定向到另一个文件,如下所示,否则不会记录错误
nohup python myscript.py > myscript.out 2> myscript.err