Восстановить сессию SSH

13

Я подключился к своему серверу через SSH и создал процесс, но внезапно мое интернет-соединение было отключено. Я знаю, что процесс продолжается, но как восстановить предыдущую сессию, чтобы увидеть ее прогресс?

Араш Мусави
источник

Ответы:

16

Как предложено выше, в будущем вы можете использовать экран, чтобы предотвратить такую ​​вещь. Краткое объяснение о том, как использовать экран:

  1. screen -S compiling_stuff
  2. Делай вещи здесь. например ./configure
  3. Если по какой-либо причине соединение закрыто, вы можете подключиться к серверу и выполнить команду screen -r comp
  4. Вы также можете отсоединить сеанс экрана, нажав CTRL+A+D

Удачи

Валентин Байрами
источник
17

screen Лучше всего запустить команду в терминале, которая будет сохраняться при отключении от нее (либо намеренно, ctrl + ad, либо потому, что соединение прервано и т. д.).

ОДНАКО вы МОЖЕТЕ повторно подключить запущенный процесс (например, оболочку вашего запущенного сеанса, если он все еще работает) к вашему текущему терминалу (то есть повторно подключить stdin, stdout, клавиатуру, но также сделать новый терминал управляющим терминалом для этого). процесс) используя: reptyr

Для лучшего из обоих миров: установите screen, запустите его, а затем повторно присоедините этот процесс в сеансах этого экрана с reptyr^^

Оливье Дюлак
источник
Оливер, как можно повторно присоединиться к запущенному процессу? Не могли бы вы дать мне подсказку, пожалуйста?
лучник
@archer: подсказка: перейдите по ссылке ^^ (конец моего 2-го абзаца)
Оливье Дюлак
@archer: но экран проще: после запуска на экране ctrl + ad: отсоединиться от экрана (и идти домой). затем снова прикрепить к экрану: «screen -r» (или более сложный способ, если что-то застрянет). Чтобы провести различие между многими сеансами экрана, дайте им имя.
Оливье Дюлак
7

Ты не можешь В будущем, вы можете предотвратить что-то подобное с помощью screenили tmux, который был создан, чтобы позволить повторно подключиться к сеансу после отключения.

Свен
источник
5

Просто подумал, что упомяну http://mosh.mit.edu/

Приложение для удаленного терминала, которое позволяет осуществлять роуминг, поддерживает прерывистое соединение и обеспечивает интеллектуальное локальное эхо и редактирование линий пользовательских нажатий клавиш.

Mosh - это замена SSH. Он более надежный и отзывчивый, особенно по Wi-Fi, сотовой связи и междугородной связи.

Джон Конли
источник
+1 за голову, я никогда не слышал об этом инструменте раньше!
Оливье Дюлак
2

Используйте screenчерез ssh для повторного подключения к вашей сессии.

Насколько я знаю, нет способа переподключиться к закрытой ssh-сессии.

Уве Плонус
источник
1

Я могу рекомендовать Byobu :

Byobu - это усовершенствование терминальных мультиплексоров GNU Screen или tmux, которое можно использовать для предоставления на экране уведомлений или статуса, а также управления несколькими окнами с вкладками. Он направлен на обеспечение лучшего взаимодействия пользователей с терминальными сеансами при подключении к удаленным серверам.

Фрэнк Зафка
источник
1

Я бы порекомендовал использовать tmux :

Вы можете восстановить сессию tmux через tmux attach.

tmux - это программное приложение, которое можно использовать для мультиплексирования нескольких виртуальных консолей, позволяя пользователю получить доступ к нескольким отдельным сеансам терминала в одном окне терминала или сеансе удаленного терминала. Это полезно для работы с несколькими программами из интерфейса командной строки и для отделения программ от оболочки Unix, которая запустила программу. [1] Он обеспечивает многие из тех же функций, что и экран GNU, но распространяется под лицензией BSD.

shyoo
источник