Экран GNU при запуске в режиме демона, что происходит, если он получает SIGTERM: - PullRequest
1 голос
/ 10 января 2012

У меня есть скрипт, который запускает экран в режиме демона, который, в свою очередь, запускает команду программы.

screen -L -c <SCREEN_CONFIG-FILE> -dmS <SCREEN-NAME> <program-COMMAND>

Сценарий закроется после запуска экрана.

Когда я делаю ps, я вижу, что экран и программа работают с разными pgid и sid. Ppid программы - это pid экрана.

Теперь, если SIGTERM отправляется на экранный процесс, что происходит с программой: получит ли он SIGTERM: по моему опыту, экран и программа были убиты, однако программа не получила сигнал SIGTERM, она умерла из-за некоторого другой сигнал, я думаю.

Кроме того, что произойдет, если SIGTERM будет отправлен процессу программы напрямую или программа сама закроется, процесс экрана также умрет:

1 Ответ

2 голосов
/ 10 января 2012

Если вы отправите SIGTERM демону экрана, он прекратит работу, а также завершится весь дочерний процесс. Если вы отправите процесс команды SIGTERM, это может зависеть от команды. Обычно он также должен завершаться, если вы можете редактировать какой-либо сценарий, вы можете перехватить SIGTERM и предотвратить его прерывание.

Допустим, вы сделали что-то вроде этого:

screen -dmS test-screen bash -c top (screen PID 2001 / top PID 3001)

и вы говорите

kill 2001

демон экрана прекратит работу, а вместе с ним будет завершен и топ и топ хоста bash.

kill 3001

завершит top, bash завершится, и демон экрана завершится.

...