如何让子进程在服务关闭后存活下来?
How to make a child process survive service shutdown?
script1.py
:
#do somthing
os.system('nohup python3 -u script2.py {} {} >> {}.out &'.format(xxx, yyy, zzz))
#do somthing
script2.py
:
这个 scipt 总是 运行 和 loop.run_forever()
当 script1 运行 作为服务时,此脚本 运行s script2 正确。
但是如果我用 'kill pid' 命令杀死 Script1,Script2 也会被自动杀死,这是我不希望的,我希望 Script2 继续工作。
编辑:我将 systemd
用于 运行ning script1.py
如果您希望启动的子进程不被 systemd 杀死,请更改为您的服务配置的 KillMode
。因此,在您的服务文件中:
[Service]
KillMode=process
默认值为KillMode=control-group
,这样systemd就会杀死它为服务创建的cgroup中的所有东西; nohup
对 cgroups 一无所知。
script1.py
:
#do somthing
os.system('nohup python3 -u script2.py {} {} >> {}.out &'.format(xxx, yyy, zzz))
#do somthing
script2.py
:
这个 scipt 总是 运行 和 loop.run_forever()
当 script1 运行 作为服务时,此脚本 运行s script2 正确。 但是如果我用 'kill pid' 命令杀死 Script1,Script2 也会被自动杀死,这是我不希望的,我希望 Script2 继续工作。
编辑:我将 systemd
用于 运行ning script1.py
如果您希望启动的子进程不被 systemd 杀死,请更改为您的服务配置的 KillMode
。因此,在您的服务文件中:
[Service]
KillMode=process
默认值为KillMode=control-group
,这样systemd就会杀死它为服务创建的cgroup中的所有东西; nohup
对 cgroups 一无所知。