Почему процесс / задача, запущенная на виртуальной машине, останавливается, когда соединение SSH, используемое для создания процесса, было разорвано?

234
Darshan L

У меня виртуальная машина работает на каком-то удаленном хосте. Я подключаюсь к нему с настольного компьютера через SSH через putty. Я запускаю процесс сборки на этой виртуальной машине.

Теперь, если я закрываю сессию SSH с замазкой, почему процесс сборки останавливается, а образ не создается?

Однако, если я раскручиваю экземпляр VNC-сервера на виртуальной машине и подключаюсь к нему через программу просмотра VNC с моего настольного компьютера. Теперь я могу получить доступ к среде графического интерфейса виртуальной машины. Теперь я запускаю терминал. И начать процесс сборки.

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

Чем они отличаются в каждом сценарии?

1

1 ответ на вопрос

2
davidbaumann

Почему процесс убит? Когда вы подключаетесь, ваш bash по умолчанию запускается. Теперь, когда вы запускаете процесс, они являются подпроцессами bash. Если соединение закрывается, bash и все его подпроцессы завершаются.


Решение: использовать screen. Запустите screenи начните процесс сборки. Если у вас отключение, все, что запускается после экрана, продолжится. Если вы переподключитесь через ssh и запустите screen -RD, вы вернетесь к своему сеансу и увидите процесс.


VNC передает только экран и управление мышью / клавиатурой в вашу систему. Все процессы работают так, как если бы вы сидели перед этой системой.

VNC-серверы могут работать в обоих направлениях; в Linux они обычно имеют свои собственные сессии (например, RDP в Windows). Но вопрос, я полагаю, был, почему "bash и все его подпроцессы" прекращаются с SSH? grawity 6 лет назад 0
@grawity Потому что они являются подпроцессами дочернего элемента SSH, который завершается? davidgo 6 лет назад 0

Похожие вопросы