Как остановить супервизор, когда конкретная программа остановилась нормально - PullRequest
1 голос
/ 27 сентября 2019

Я использую supervisord внутри докера для запуска двух процессов:

  1. основного процесса и
  2. туннеля ssh, необходимого для основного процесса

Когда основной процесс останавливается нормально, процесс туннеля ssh остается живым вечно, предотвращая остановку докера.Это проблематично, так как контейнер выполняется как задание Kubernetes, которое должно завершиться после завершения основного процесса.

Вопрос в том, возможно ли уничтожить туннель ssh, когда основной процесс остановлен или даже лучше: остановкасупервизор, когда основной процесс остановился?

1 Ответ

0 голосов
/ 27 сентября 2019

используйте event listner:

[eventlistener:MyMainProcessName]
command=kill -3 $(cat "/var/run/supervisord.pid")
process_name=MyMainProcessName
events=PROCESS_STATE_STOPPED, PROCESS_STATE_EXITED, PROCESS_STATE_FATAL

, который отправит SIGQUIT Supervisor, если этот процесс остановился

...