Этот вопрос возник довольно много ( действительно много ), но я нахожу ответы, как правило, неполными. Общий вопрос: «Почему моя работа не убивается, когда я выхожу / убиваю ssh?», И вот что я нашел. Первый вопрос: насколько общая информация следующая? Кажется, что следующее верно для современного Debian linux, но я упускаю некоторые моменты; и что нужно знать другим?
Все дочерние процессы, фоновые или нет оболочки, открытой через ssh-соединение, уничтожаются с помощью SIGHUP, когда ssh-соединение закрывается, только если установлена
huponexitопция: запустите,shopt huponexitчтобы увидеть, правда ли это.Если
huponexitэто правда, то вы можете использоватьnohupили,disownчтобы отделить процесс от оболочки, чтобы он не был убит при выходе. Или запустить вещи сscreen.Если задано значение
huponexitfalse, которое по умолчанию используется, по крайней мере, в некоторых linux, то фоновые задания не будут уничтожены при обычном выходе из системы.Но даже если значение
huponexitfalse, то, если соединение 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 соединение