Я работаю на удаленной машине с CentOS 5.6, и моя сеть продолжает падать. Есть ли способ восстановить мои зависшие сеансы после повторного подключения?
РЕДАКТИРОВАТЬ: я делаю некоторые обновления и установки с yum и беспокоюсь, что это может быть проблемой, если процессы продолжают зависать в середине того, что они делают.
linux
session
shell
networking
Джефф Шаллер
источник
источник
Ответы:
Там нет никакого способа, но для предотвращения этого я люблю использовать
tmux
. Я запускаю tmux, начинаю работу и продолжаю свой путь. Если я вернусь и обнаружу, что соединение было разорвано, все, что мне нужно сделать, это восстановить соединение и набратьtmux attach
.Вот пример.
источник
screen
.Рекомендации для tmux и screen являются хорошими предложениями. Они подразумевают ответ на ваш вопрос, но на самом деле не говорят об этом. Ответ на вопрос: нет пути. Если вы входите через ssh, оболочка завершается, когда соединение прерывается. Обходной путь - войти в систему и немедленно запустить виртуальный терминал какого-либо типа (например,
tmux
). Когда соединение обрывается, оболочка, в которой вы находитесь, заканчивается, но вы можете открыть новую оболочку и повторно подключиться к виртуальному терминалу (то есть работает оболочка, в которой вы фактически выполняете свою работу).источник
Как сказал Уильям, короткий ответ - нет, пути нет. Чтобы предотвратить это, вы можете использовать команду экрана, прежде чем потерять соединение
источник
Нет, вы не можете восстановить оболочку после отключения. Вместо этого вы можете убедиться, что команда, которую вы выполняли, продолжает выполняться после отключения.
Для этого используйте команды nohup и disown, которые обычно являются встроенными командами в большинстве оболочек, т.е. вам не нужно ничего устанавливать. Это работает только для неинтерактивных команд.
Итак, шаги будут следующими:
Когда вы вернетесь на сервер, просто "tail nohup.out", чтобы увидеть, как работает команда.
источник
Кто-то добавил reptyr в комментарии, а не в ответ, так что я не могу его высказать, но это кажется хорошим ответом на отредактированный вопрос и отлично работает на CentOS.
см .: https://github.com/nelhage/reptyr https://www.ostechnix.com/reptyr-move-running-process-new-terminal/
То же самое, я потерял удаленное подключение к сеансу обновления yum. Поэтому я искал и нашел этот вопрос ... затем снова подключился и использовал экран:
и там я нахожусь в восстановленном приглашении, которое давал yum несколькими часами ранее.
Технически все ответы верны, это НЕ восстановление зависшего сеанса, это переопределение потерянного процесса в текущем сеансе. И очень полезно это тоже ...
источник
Как и многие люди полагают ,
screen
иtmux
они оба поддерживают основные функции, но имеют различные характеристики конкретных, поэтому нельзя сказать , что один превосходит другой во всех случаях. Например, только tmux поддерживает разбиение окна , в то время как только экран GNU может переключать перенос длинных строк с помощью (Ctrl + ar). Смотрите более подробное сравнение здесь .Существуют также инструменты, специально предназначенные для решения этой проблемы ssh:
Autossh - это программа, которая запускает копию ssh и отслеживает ее, при необходимости перезапуская, если она умирает или прекращает пропуск трафика. Идея из rstunnel.
Mosh - это приложение для удаленного терминала, которое позволяет осуществлять роуминг, поддерживает прерывистое соединение и обеспечивает интеллектуальное локальное эхо и линейное редактирование нажатий клавиш пользователя. Mosh - это замена SSH. Он более надежный и отзывчивый, особенно по Wi-Fi, сотовой связи и междугородной связи.
источник
Это можно сделать с помощью
tmux
оболочки. Если вы отсоединились, самый быстрый способ восстановить сеанс:источник
tmux
запущен сеанс.attach
какa
».