【发布时间】:2019-11-15 21:19:00
【问题描述】:
我有一个 python 脚本需要在启动时作为守护程序运行。进程与 tty(和 pdb)分离,但代码没有运行。
我已经把它缩小到一个最小的例子
import daemon
from time import sleep
f1 = open('out.txt','a')
with daemon.DaemonContext():
while(1):
f1.write('this is a test')
sleep(5)
我希望脚本继续运行并每 5 秒向 out.txt 添加一行,但脚本只是从 tty(或 pdb)中分离出来,并且 ps -ax 显示 python 解释器不再运行。 out.txt 已创建,但保持为空
【问题讨论】:
-
我认为更好的方法是使用supervisord 到execute the script 而不是使用守护程序模块
-
您可能需要考虑使用 systemd。看看例如stackoverflow.com/questions/13069634/…
-
您的操作系统已经为您提供了将脚本作为守护进程运行的能力——很可能是 sysv、upstart 或 systemd 之一。没必要自己写妖魔化。
-
@p0te:
it doesn't print to the file因为它被缓冲了。将f1.flush()放在f1.write ...之后即可立即查看文件内容。 -
@p0te: FWIW, Here 是如何使用 rc.d 的一个简单示例。
标签: python freebsd python-daemon