Как восстановить оболочку после отключения

Выполняю некоторые работы на удаленной машине CentOS 5.6, и моя сеть продолжает падать. Есть ли способ, по которому я могу восстановить мои зависающие сеансы после того, как я снова подключусь?

EDIT: я делаю некоторое обновление и установку с помощью yum, и я беспокоюсь, что это может быть проблемой, если процессы продолжают вилять в середине того, что они делают.

32 голоса | спросил sergio 23 PM00000010000000631 2011, 13:35:06

6 ответов


55

Нет способа, но для предотвращения этого мне нравится использовать tmux. Я начинаю tmux, начинаю операцию и продолжаю свой путь. Если я вернусь и обнаружу, что соединение было повреждено, все, что мне нужно сделать, это повторно подключиться и введите tmux attach.

Вот пример.

$ tmux
$ make <something big>
......
Connection fails for some reason
Reconect

$ tmux ls
0: 1 windows (created Tue Aug 23 12:39:52 2011) [103x30]

$ tmux attach -t 0
Back in the tmux sesion
ответил 23 PM00000010000001831 2011, 13:39:18
34

Рекомендации для tmux и экрана - хорошие предложения. Они подразумевают ответ на ваш вопрос, но на самом деле не говорят об этом. Ответ на вопрос: нет способа. Если вы входите в систему через ssh, оболочка завершается, когда соединение падает. Обход - это логин и немедленный запуск какого-либо виртуального терминала (например, tmux). Когда соединение падает, оболочка, в которой вы находитесь, завершена, но вы можете открыть новую оболочку и снова подключиться к виртуальному терминалу (на котором запущена оболочка, в которой вы фактически выполняете свою работу.)

ответил William Pursell 23 PM00000010000001731 2011, 13:44:17
8

Как сказал Уильям, короткий ответ - нет, нет способа. Чтобы предотвратить это, вы можете использовать команду экрана , прежде чем потерять соединение

ответил Nicholas Smith 23 PM00000010000001631 2011, 13:38:16
3

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

Чтобы достичь этого, используйте команды «nohup» и «disown», которые обычно являются встроенными командами для большинства оболочек, т. е. вам не нужно ничего устанавливать. Это работает только для неинтерактивных команд.

Итак, шаги будут следующими:

  1. Вход на сервер
  2. Запустите команду: «nohup sudo yum update &» (это также будет записывать все выходные данные в файл nohup.out в вашем текущем каталоге)
  3. Запустить «disown% 1»
  4. Не стесняйтесь отключиться в этой точке или подождите, чтобы отключиться:)

Когда вы вернетесь на сервер, просто «tail nohup.out», чтобы увидеть, как эта команда работает.

ответил zygis 17 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowTue, 17 Sep 2013 15:29:52 +0400 2013, 15:29:52
2

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

см: https://github.com/nelhage/reptyr https://www.ostechnix.com/reptyr-move-running -процесса новый терминал-/

  

Есть ли способ восстановить мои зависающие сеансы после того, как я снова подключусь?

     

EDIT: я делаю обновление и установку с помощью yum, и я волнуюсь   это может быть проблемой, если процессы будут висящими в середине   что бы они ни делали.

Так же, я потерял удаленное подключение к сеансу обновления yum. Поэтому я искал и нашел этот вопрос ... затем снова подключился и использовал экран:

  1. reconnect ssh
  2. Экран
  3. установить reptyr согласно ссылкам выше
  4. ps -a | grep yum
  5. reptyr psid

, и я нахожусь в восстановленном приглашении, которое yum давал несколько часов назад.

Технически ответы правильны, это НЕ восстановление приостановленного сеанса, это повторение сиротского процесса для текущего сеанса. И очень полезно это тоже ...

ответил ingleno 14 AMpFri, 14 Apr 2017 03:48:12 +030048Friday 2017, 03:48:12
1

Как многие люди предложили screen и tmux, они поддерживают базовую функциональность, но имеют четкие специфические особенности, поэтому нельзя сказать, что во всех случаях человек превосходит другого. Например, только tmux поддерживает Разделение окон , в то время как только экран GNU может переключать перенос длинной строки с помощью (Ctrl + a r). См. Более подробное сравнение здесь .

Также существуют инструменты, специально предназначенные для устранения этой проблемы ssh:

Autossh - это программа для запуска копии ssh и ее мониторинга, перезапуска при необходимости, если он умрет или прекратит передачу трафика. Идея от rstunnel.

Мош - это приложение удаленного терминала, которое позволяет осуществлять роуминг, поддерживает прерывистую связь и обеспечивает интеллектуальное локальное эхо и редактирование пользовательских нажатий клавиш. Мош является заменой SSH. Он более надежный и отзывчивый, особенно по Wi-Fi, сотовой и междугородной связью.

ответил Yaroslav Nikitenko 16 PMpThu, 16 Apr 2015 14:45:09 +030045Thursday 2015, 14:45:09

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

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132