如何使子进程幸免于服务关闭?

时间:2020-09-28 18:14:33

标签: python systemd nohup

+----+---------+-------------+-------------+-----------+ | id | user_id | is_verified | name | updated_at| +----+---------+-------------+-------------+-----------+ | 1 | 1 | 0 | some name | 2001 | | 2 | 1 | 1 | some name | 2000 | | 3 | 2 | 0 | some name | 2000 | | 4 | 1 | 0 | some name | 2000 | | 5 | 3 | 1 | some name | 2003 | |... | ... | ... | ......... | .... | +----+---------+-------------+-------------+-----------+

script1.py

#do somthing os.system('nohup python3 -u script2.py {} {} >> {}.out &'.format(xxx, yyy, zzz)) #do somthing : 此密码始终与script2.py

一起运行

当script1作为服务运行时,此脚本可以正确运行script2。 但是,如果我使用“ kill pid”命令杀死Script1,则Script2也将被自动杀死,这是我不希望的,我希望Script2继续工作。

编辑:我使用loop.run_forever()来运行systemd

1 个答案:

答案 0 :(得分:0)

如果希望子进程不被systemd杀死,请更改为服务配置的KillMode。因此,在您的服务文件中:

[Service]
KillMode=process

默认值为KillMode=control-group,这样systemd会杀死为服务创建的cgroup中的所有内容;而nohup对cgroup一无所知。