Выключение ПК без уничтожения сессий SSH

14

У меня есть тяжелые, длинные процессы, запущенные на удаленных машинах Linux. Я использую свой ноутбук для SSH к этим машинам и запускаю процессы с моего дивана.

НО, когда я хочу выключить свой ноутбук, у меня проблемы, так как удаленные процессы убиты.

Я провел исследование и обнаружил, что «экран» - отличное решение для меня! (Пока я не выключаю свой ноутбук). Разве нет способа «сохранить» «экранные» сеансы, чтобы я мог закрыть его, а затем повторно присоединить к сеансу?

Сатьяджит Бхат
источник
У вас запущен экран в удаленных системах Linux?
Сэм Миллер
Можно ли фоновые процессы?
ennuikiller

Ответы:

32

Похоже, вы запускаете сеанс экрана на своем ноутбуке. Затем перейдите из этого сеанса на удаленный хост (ы). Выключение ноутбука уничтожит процесс локального экрана, который, в свою очередь, убьет сеанс ssh.

То, что вы хотите сделать, это ssh с вашего ноутбука на удаленный хост (ы). Затем запустите сеанс экрана на удаленном хосте. Когда ваш ноутбук выключен, сеанс ssh прекратится, но сеанс удаленного экрана сохранится.

При следующем входе в удаленную систему вы можете повторно присоединиться к сеансу экрана с помощью «screen -r» или, если у вас есть несколько сеансов экрана, «screen -r <pid>».

Примечание: если вы забыли отключиться от сеанса удаленного экрана до того, как ssh будет уничтожен, сеанс экрана может подумать, что он все еще подключен. В этом случае вам нужно будет выполнить «screen -dr <pid>», чтобы сначала отключить сеанс.

erichui
источник
4
Кстати, если я правильно помню, нажатие, Ctrl+Aа затем, Dкогда вы в screen, отсоединит сеанс экрана.
Дэвид Z
@ Давид это правильно, вы также можете просто закрыть свой терминал или сессию ssh, и экран останется открытым. "screen -raAd" будет присоединен.
Крис
Как я могу начать сеанс экрана на удаленном хосте?
глупость
15

Вы можете использовать, nohupчтобы запустить процесс, который продолжит работать после выхода из системы. Это может быть то, что вы ищете.

Джон Смит
источник
Для уже запущенного процесса вы можете выполнить ^ Z, а затем disownсоздать то, что я считаю эквивалентным эффектом. disownэто башизм, который может или не может быть доступен на других оболочках.
интуитивно
+1 за nohup. Проблема в ^Zтом, что он приостанавливает процесс. Там нет никакого способа, чтобы фоновый процесс, но держать его без сбоев.
детально
6

Если вы отключите удаленный сеанс screen, вы можете безопасно выключить свой ноутбук.

chryss
источник
Не уверен, что очевидно, что сеанс экрана, от которого отсоединяется, должен быть на удаленном сервере.
интуитивно
6

Смысл экрана - запустить его на сервере и отключить с помощью CTRL+ A+ D.

Питер Мортенсен
источник
2

Используйте nohup. Еще один вариант использования VNC. Создайте сеанс VNC на сервере. Затем подключайтесь к нему всякий раз, когда вы работаете. (Более полезно, когда длинный процесс использует некоторый GUI - например, IDE)

Джаян
источник
0

Если на этих серверах есть удаленный KVM ILO / DRAC / Other и т. Д., Вы можете подключиться к консоли и там взаимодействовать. Поскольку инициируемые сеансы в основном локальные, отключение соединения с вашего ноутбука ничего не изменит.

DHayes
источник