gpt4 book ai didi

python - Ubuntu 上的 "Daemon"- 登录失败

转载 作者:太空宇宙 更新时间:2023-11-04 10:38:16 24 4
gpt4 key购买 nike

我正在使用 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

它成功地启动了脚本并使其保持事件状态而没有问题。它还会记录脚本被终止的时间,但不会在标准输出中记录任何打印语句。

当脚本遇到异常时,它似乎会转储所有应该立即打印出来的历史日志数据。

最佳答案

您的输出缓冲区有问题。许多程序缓冲输出以获得一些性能,但在某些情况下它会延迟输出在日志中的可见性。

在以下情况下,您会在日志中看到一些内容:

  • 当输出缓冲区中的数据量达到一定大小并被刷新
  • 当输出关闭时,例如当进程退出时。

你应该以某种方式强制你的脚本更快地刷新输出(例如打印到标准输出)。有几个选项:

  • 完全阻止使用输出缓冲区——效率不高
  • 只允许输出缓冲到一行。然后每个换行符都会导致输出被刷新并变得可见
  • 使用 logging 注销 - 有时它会强制缓冲到您需要的内容。
  • 使用一些外部程序启动您的脚本 - 有些正在使用控制输出缓冲区的黑客。

您将找到一些关于输出缓冲区控制的 SO 问题和答案。其中之一是 Disable output buffering ,另一个建议使用 unbuffer How to make output of any shell command unbuffered? .

关于python - Ubuntu 上的 "Daemon"- 登录失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36344159/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com