Почему процесс / задача, запущенная на виртуальной машине, останавливается, когда соединение SSH, используемое для создания процесса, было разорвано?
У меня виртуальная машина работает на каком-то удаленном хосте. Я подключаюсь к нему с настольного компьютера через SSH через putty. Я запускаю процесс сборки на этой виртуальной машине.
Теперь, если я закрываю сессию SSH с замазкой, почему процесс сборки останавливается, а образ не создается?
Однако, если я раскручиваю экземпляр VNC-сервера на виртуальной машине и подключаюсь к нему через программу просмотра VNC с моего настольного компьютера. Теперь я могу получить доступ к среде графического интерфейса виртуальной машины. Теперь я запускаю терминал. И начать процесс сборки.
Теперь, даже если я закрою клиент VNC или выключу настольный компьютер, процесс сборки все равно будет происходить.
Чем они отличаются в каждом сценарии?
1 ответ
Почему процесс убит? Когда вы подключаетесь, ваш bash по умолчанию запускается. Теперь, когда вы запускаете процесс, он является подпроцессом bash. Если соединение закрывается, bash и все его подпроцессы завершаются.
Решение: использовать screen
, Бежать screen
и начать процесс сборки. Если у вас отключение, все, что запускается после экрана, продолжится. Если вы переподключитесь по ssh сейчас и запустите screen -RD
, вы вернетесь к своей сессии и увидите процесс.
VNC передает только экран и управление мышью / клавиатурой в вашу систему. Все процессы работают так, как если бы вы сидели перед этой системой.