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

问题描述

+----+---------+-------------+-------------+-----------+ | 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

解决方法

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

[Service]
KillMode=process

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

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...