1

Я пытаюсь докернизировать автономный демон передачи с помощью https. Поэтому я использую пакеты translation transmission-daemon и nginx , а докер основан на Alpine Linux.

Для запуска обеих программ я использую supervisor .

Все работает хорошо, но я хочу, чтобы docker container stop изящно убила мой контейнер. Итак, я настроил supervisor для распространения сигнала TERM для transmission-daemon .

Это хорошо работает, когда передача простаивает. Но если я остановлю контейнер при загрузке или выполнении чего-либо, он, к сожалению, не будет работать Кажется, что сигнал полностью игнорируется, потому что даже после окончания загрузки он продолжает работать.

Я понятия не имею, почему. Может кто-то помочь мне, пожалуйста?

Вот моя конфигурация передачи супервизора:

[program:transmission]
user=transmission
command=/usr/bin/transmission-daemon -f
stopsignal=TERM
stopwaitsecs=60
stopasgroup=true
killasgroup=true

Я открыт для любых предложений.

2 ответа2

1

От арки Transmission вики это выглядит как команды для завершения transmission-daemon , являются:

killall transmission-daemon

Или же

$ transmission-remote --exit

Или из помощи Ubuntu:

transmission-remote -n 'transmission:transmission' -q

Я думаю, что сигналы SIGTERM и TERM одинаковы, и по умолчанию killall отправляет SIGTERM, похоже, ваш супервизор должен работать ... после stopwaitsecs он тоже должен посылать сигнал KILL, поэтому, если он не отправляет правильные сигналы в нужное время ... В терминале подтвердите, что TERM/SIGTERM прервет передачу. Если это не так, возможно, это ошибка.

Попробуйте добавить строку redirect_stderr или stdout_logfile чтобы увидеть, сообщит ли supervisord что-нибудь полезное

1

Это, наверное, ошибка. Сообщается в Альпийском трекере ошибок:

https://bugs.alpinelinux.org/issues/8218

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .