我正在使用Daemon生成我拥有的python脚本的守护进程。但是,似乎日志不会写入文件。我正在使用的简单bash脚本(为了便于阅读,这里使用了适当的格式):
if ! daemon --name atlas --running; then
daemon --errlog /home/ubuntu/output.log
--dbglog /home/ubuntu/output.log
--output /home/ubuntu/output.log
--stdout /home/ubuntu/output.log
--stderr /home/ubuntu/output.log
--respawn
--name acme
/home/ubuntu/acme.py
fi
它成功启动了脚本并使其保持活动而没有问题。它还会在脚本被终止时记录,但不记录stdout中的任何print语句。
当脚本遇到异常时,它似乎会转储应该立即打印出的所有历史日志数据。
答案 0 :(得分:1)
输出缓冲区存在问题。许多程序都在缓冲输出以获得一些性能,但在某些情况下它会推迟输出在日志中可见。
在以下情况下,您会在日志中看到一些内容:
你应该以某种方式强制你的脚本更快地刷新输出(例如打印到stdout)。几乎没有选择:
logging
注销 - 有时它会强制缓冲到你需要的东西。您应该找到一些有关输出缓冲区控制的SO问题和答案。其中一个是Disable output buffering,另一个建议使用unbuffer
How to make output of any shell command unbuffered?。