Этот вопрос возник довольно много ( действительно много ), но я нахожу ответы, как правило, неполными. Общий вопрос: «Почему моя работа не убивается, когда я выхожу / убиваю ssh?», И вот что я нашел. Первый вопрос: насколько общая информация следующая? Кажется, что следующее верно для современного Debian linux, но я упускаю некоторые моменты; и что нужно знать другим?
Все дочерние процессы, фоновые или нет оболочки, открытой через ssh-соединение, уничтожаются с помощью SIGHUP, когда ssh-соединение закрывается, только если установлена
huponexit
опция: запустите,shopt huponexit
чтобы увидеть, правда ли это.Если
huponexit
это правда, то вы можете использоватьnohup
или,disown
чтобы отделить процесс от оболочки, чтобы он не был убит при выходе. Или запустить вещи сscreen
.Если задано значение
huponexit
false, которое по умолчанию используется, по крайней мере, в некоторых linux, то фоновые задания не будут уничтожены при обычном выходе из системы.Но даже если значение
huponexit
false, то, если соединение ssh будет прервано или прервано (отличается от обычного выхода из системы), фоновые процессы все равно будут прерваны. Этого можно избежать с помощьюdisown
илиnohup
как в (2).Существует некоторое различие между (a) процессами, родительский процесс которых является терминалом, и (b) процессами, к которым подключены stdin, stdout или stderr . Я не знаю, что происходит с процессами, которые (а), а не (б), или наоборот.
Последний вопрос: как я могу избежать поведения (3)? Другими словами, по умолчанию в Debian фоновые процессы проходят самостоятельно после выхода из системы, но не после разрыва соединения ssh. Я хотел бы, чтобы одно и то же происходило с процессами независимо от того, было ли соединение нормально закрыто или разорвано. Или это плохая идея?
Редактировать: Другой, важный способ сохранить рабочие места убитых, который работает (?) В любом случае, это запускать их через экран . Но вопрос больше в том, чтобы понять, когда что-то убивают, а когда нет: иногда люди хотят, чтобы рабочие места были убиты, например, при выходе из системы.
Дополнительные темы: - Разъяснение сигналов (sighup), заданий и управляющего терминала - /server/117152/do-background-processes-get-a-sighup-when-logging-off - Продолжить SSH фоновые задачи / задания при закрытии SSH - Будет ли задание, помещенное в фоновом режиме, продолжать работать после закрытия сеанса SSH? - Предотвратить остановку уже запущенного фонового процесса после закрытия клиента SSH. - Как я могу запустить процесс через SSH, чтобы он продолжал выполняться после моего отключения? - Невозможно сохранить удаленную работу на OS X - Закрыть SSH соединение