Одна из проблем, с которыми я сталкиваюсь при работе с 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
Файл конфигурации супервизора выглядит следующим образом:
[program:zookeeper]
command=zkServer.sh start-foreground
autorestart=true
stopsignal=KILL
Этот тип процессов, которые имеютсупервайзер плохо обращается с несколькими детьми, когда дело доходит до их остановки с supervisorctl
.Поэтому, когда я запускаю это от супервизора и пытаюсь остановить его от супервизора, уничтожается только процесс верхнего уровня, но не сам процесс Java.