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.

54
задан Lorenzo Belli 20 December 2016 в 03:07
поделиться