Назад | Перейти на главную страницу

По умолчанию сигнал об отключении отсутствует

У меня есть сервер, на котором запущен сервер Ubuntu. Он находится за прокси ... Не знаю, имеет ли это значение. Но я обнаружил, что несколько процессов, которые я пробовал, завершаются, когда я выхожу из сеанса SSH. Например, у меня есть сервер ноутбука ipython и серверные процессы Mongod, запущенные на этом сервере. Каждый раз, когда я выхожу из системы, оба этих процесса умирают, даже если они выполняются в фоновом режиме с &

Я недавно обнаружил nohud команда, которая работает фантастически. Однако почему я не сталкивался с этим с большинством серверов? Есть ли какой-то тип по умолчанию на сервере unbuntu, который убивает все процессы пользователя, когда они зависают от SSH? Могу ли я запустить nohud по умолчанию для всех процессов?

Спасибо

Процессы Ubuntu обрабатывают сигналы так же, как и другие дистрибутивы Linux и Unix. Когда сеанс SSH отключается, сигнал SIGHUP отправляется на процесс лидера сеанса, что, вероятно, было бы bash.

Баш, в свою очередь, убирается за собой:

По умолчанию оболочка закрывается при получении SIGHUP. Перед выходом интерактивная оболочка повторно отправляет SIGHUP ко всем работам, запущенным или остановленным. Остановленные задания отправляются SIGCONT чтобы они получили SIGHUP. Чтобы оболочка не отправляла SIGHUP сигнал для конкретного задания, его следует удалить из таблицы заданий с помощью встроенной команды disown (см. Встроенные средства управления заданиями) или отмечен как не принимающий SIGHUP с помощью disown -h.

Если huponexit опция оболочки была установлена ​​с shopt (видеть Встроенный магазин), Баш отправляет SIGHUP ко всем заданиям при выходе из интерактивной оболочки входа.

disown это встроенная команда Bash. nohup это внешняя команда с аналогичным эффектом.

Я не рекомендую переконфигурировать Bash, чтобы не убивать все его дочерние процессы (и я не знаю, как это сделать). Скорее, лучшая цель - предотвратить смерть Bash при исчезновении его TTY. Ты можешь использовать screen, tmux, или mosh чтобы сохранить жизнь Башу.