Supervisord泄漏的subprocess通过shell脚本启动

我使用supervisor 3守护一个python进程,这个进程是通过一个为python设置一些configuration的bash脚本启动的。 bash脚本在前台运行python程序,FWIW。

这个设置有以下问题:当supervisord试图杀死进程时,它只会杀死bash脚本,而不是python进程。 所以我最终泄漏了运行旧代码的python进程,随后出现各种问题。 我怎样才能解决这个问题?

主pipe是否有一些configuration选项来告诉它杀死subprocess?

bash脚本是否会捕获TERM信号并将其明确传递给孩子会有帮助吗? 这似乎是不必要的,因为当我从交互式shell运行它,子python进程被杀死就好了。

我看到主pipe让我select要杀的信号,现在默认为TERM 。 可能改变这种帮助?

这里是关于Stackoverflow的一个类似的问题:

主pipe不能干净地启动龙卷风

我的解决scheme是在相关的[program:x]组中使用stopasgroup = true

我最近写了一篇文章,讨论这个问题,并解释如何正确地解决它:

http://veithen.github.io/2014/11/16/sigterm-propagation.html