2

Я хочу quit сеанса экрана. Для этого я использую screen -S session_name -X quit . Это работает хорошо, но не так, как я бы.

Программа, запущенная на screen имеет обработчик для SIGTERM , и мне действительно нужен этот обработчик, чтобы он мог выполнить надлежащую очистку. Однако запуск screen -S session_name -X quit приводит к завершению работы программы без вызова ее обработчика.

Простое kill $(pidof bla) приводит к вызову моего обработчика, правильной очистке и, наконец, закрытию сеанса screen .

Тем не менее, я хотел бы иметь возможность остановить все это, закрыв screen используя имя его сеанса, и позволяя ему "пересылать" сигнал SIGTERM .

Любая помощь приветствуется, спасибо.

1 ответ1

2

Решение, с которым я пришел, основано на предложении @Kwaio. В моем случае у меня есть только один процесс, который заинтересован в получении сигнала SIGTERM . Этот процесс уже передает его своим детям.

Это предполагает, что существует только один сеанс screen с заданным именем.

kill $(ps h --ppid $(screen -ls | grep session_name | cut -d. -f1) -o pid)

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