我在 Python daemon.py 上编写脚本,生成其他进程并监视它们。
我在 5.15 内核上使用 Debian。我需要程序从系统启动时就开始工作,当程序死掉时,系统又重新启动它,所以我使用 systemd 来解决这个问题。
在第一个版本中我使用
subrocess.Popen(<command>)
并且一切正常,但是
现在我需要子进程在主进程死亡后继续工作。
比我决定让我的模块继承
multiprocessing.Process
,但是 systemd 会杀死所有在主程序终止时不会终止的进程。
我使用了一种简单的方法来运行一个中间进程,该进程将为 daemon 完成主要工作,但是 systemd 仍然不允许程序运行。 值得注意的是,我使用了
multiprocessing.Process
来使模块并行工作。我之前用过这个:https://docs.python.org/3/library/subprocess.html#popen-constructor
但据我所知,当父进程停止时子进程终止是正常行为......这就是为什么它们被称为父子进程。
也许您需要一个避免进程之间出现父子关系的解决方案?