“如何在 Linux 上启动时运行脚本”,但使用子进程

问题描述 投票:0回答:1

我在 Python daemon.py 上编写脚本,生成其他进程并监视它们。
我在 5.15 内核上使用 Debian。我需要程序从系统启动时就开始工作,当程序死掉时,系统又重新启动它,所以我使用 systemd 来解决这个问题。

在第一个版本中我使用

subrocess.Popen(<command>)
并且一切正常,但是

  1. 当主进程死亡时,所有 Popen 也会死亡
  2. 我想,通过命令行运行我的模块是一个错误的决定

现在我需要子进程在主进程死亡后继续工作。
比我决定让我的模块继承

multiprocessing.Process
,但是 systemd 会杀死所有在主程序终止时不会终止的进程。

我使用了一种简单的方法来运行一个中间进程,该进程将为 daemon 完成主要工作,但是 systemd 仍然不允许程序运行。 值得注意的是,我使用了

multiprocessing.Process
来使模块并行工作。
也许您建议使用某些东西来代替 systemd,或者指出另一个解决方案

python-3.x linux multithreading multiprocessing debian
1个回答
0
投票

我之前用过这个:https://docs.python.org/3/library/subprocess.html#popen-constructor

但据我所知,当父进程停止时子进程终止是正常行为......这就是为什么它们被称为父子进程。

也许您需要一个避免进程之间出现父子关系的解决方案?

© www.soinside.com 2019 - 2024. All rights reserved.