bash – supervisord停止子进程

前端之家收集整理的这篇文章主要介绍了bash – supervisord停止子进程前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
其中一个问题,我面对supervisord是,当我有一个命令,反过来又产生另一个过程,supervisord不能够杀死它。

例如我有一个java进程,当运行正常是喜欢

$ zkServer.sh start-foreground
 $ ps -eaf | grep zk
 user 30404 28280  0 09:21 pts/2    00:00:00 bash zkServer.sh start-foreground
 user 30413 30404 76 09:21 pts/2    00:00:10 java -Dzookeeper.something..something

supervisord配置文件看起来像:

[program:zookeeper]
command=zkServer.sh start-foreground
autorestart=true
stopsignal=KILL

这些具有多个孩子的过程不能很好地由supervisord处理,当它停止从supervisorctl。所以当我从supervisord运行这个,并试图停止它从supervisorctl,只有顶级进程被杀死,但不是实际的java进程。

Rick Hanlon II在这里遇到了同样的问题: https://coderwall.com/p/4tcw7w

应该在supervisord的程序部分中设置选项stopasgroup = true,以便不仅停止父进程,而且停止子进程。

示例给出:

[program:some_django]
 command=python manage.py runserver
 directory=/dir/to/app
 stopasgroup=true

另外,记住,你可能有一个较旧的supervisord包没有“stopasgroup”功能
我在Raspberry Pi上试过这些Debian软件包:

> supervisor_3.0a8不工作。> supervisor_3.0b2-1按预期工作。

猜你在找的Bash相关文章