Убийство дочерних процессов мастера через рунит

Я использую рунит для контроля процесса. У меня есть следующий простой скрипт запуска для службы:

#!/bin/sh -e
cd /opt/myapp
exec 2>&1
exec chpst -u ubuntu /home/ubuntu/.rvm/bin/myapp_foreman start -t 1 -c web=1,worker=1

Это запускает мастера, завернутого в соответствующую среду RVM с использованием оболочки RVM. Все запускается и работает нормально, но когда я выдаю sv down myapp Я вижу в журналах, что бригадир сообщает, что получает SIGTERM, а бригадный процесс завершается, но дочерний веб-и рабочий процессы продолжают выполняться.

Эта проблема также возникает, если я просто вручную отправляю SIGTERM мастеру, используя kill, а не через runit, поэтому он может быть не специфичным для runit. Однако, если я в интерактивном режиме запускаю мастера, а затем делаю Cc, чтобы отправить SIGINT, который работает правильно. Отправка SIGINT и SIGKILL через kill, однако, не работает.

Есть ли способ заставить мастера завершать дочерние процессы при неинтерактивном запуске, как здесь, в моем скрипте runit?

0 ответов

Другие вопросы по тегам