systemd - Child正在父出口处收到SIGTERM

时间:2016-03-15 16:55:45

标签: python signals systemd sigterm

环境:

我有一个python服务器,可以分成3个孩子。

对于父母:

  • SIGTERM应该杀死所有孩子,SIGHUP只是记录和存在

对于孩子:

  • SIGTERM和SIGHUP都映射到SIG_DFL

问题:

当我通过命令行python <script.py>启动脚本,并将SIGHUP发送给父kill -1 <pid-of-parent>时,它表现良好。父母退出,忙碌的孩子只有在完成I / O后退出。

但是如果使用systemd脚本启动相同的脚本,当我将SIGHUP发送给父级时,仍然忙的子级会收到SIGTERM并导致I / O中断。

对此有何解释/解决方案?它有些误配置吗?

1 个答案:

答案 0 :(得分:0)

好像您需要将KillMode系统服务设置为process

  

KillMode ...指定如何杀死此单位的进程。 ...如果设置为control-group,则该单元的控制组中的所有剩余进程将在单元停止时被终止...如果设置为进程,则只有主进程本身被终止...默认为control-group < / p>

更多信息:Flask-Mail

如果以这种方式生成进程,另一种方法是在creationflags调用中将subprocess.CREATE_NEW_PROCESS_GROUP设置为subprocess.Popen