Потеряно соединение SSH при обновлении сервера - Как восстановить соединение с процессом?

32

Итак, я выполнял обновление Ubuntu Server с 11.04 до 11.10.

Я забыл об этом в фоновом режиме, и мой SSH-клиент вышел из строя и отключился (замазка на Windows, иди разберись). Последней вещью на моем терминале был вопрос о сохранении старого конфига и т. Д.

Когда я снова вошел на сервер, файлы aptitude были заблокированы другим процессом, поэтому я предполагаю, что этот процесс обновления находится в ожидании моего ввода.

Как я могу взаимодействовать с этим процессом и продолжить обновление? Если возможно.

Благодарность

Стивен Мелроуз
источник
1
возможный дубликат сеанса Reconnect ssh при отключении без экрана
кванты

Ответы:

36

Процесс на самом деле выполняется в сеансе экрана или byobu от имени пользователя root. заново подключитесь к серверу с замазкой на порту 22 или отказоустойчивом 1022. sudo su - или su - в вашу корневую учетную запись и вернитесь на экран с помощью byobu или screen -r и возобновите с того места, где вы оставили.

о да, я выяснил трудный путь ;-)

user120896
источник
1
Вау спасибо! Я фактически запускал обновление релиза с 11.10 до 12.04 в byobu, а затем он закрывался, когда был обновлен byobu, но я смог повторно подключиться к сеансу корневого экрана и посмотреть, как закончится обновление! Я чуть не пытался принудительно убить обновление, но, к счастью, я вовремя прочитал этот ответ.
Ибрагим
3
При остановленной установке он сказал, что экран уже подключен, поэтому я принудительно отсоединяю экран, чтобы я мог установить его заново. Команда screen -D Информация отсюда: kb.iu.edu/data/ahrm.html
Дэвид
1
Использование screen -r <id>также работает, и вам нужно всего лишь ввести несколько символов идентификатора, чтобы он работал.
Даниил
1
Это не работает для меня, так как говорит, что screenне установлен.
starbeamrainbowlabs
1
Более новые Ubuntu используют sudo screen -D -rпосле sudo su -(если не root).
bshea
34

Ты не можешь Найдите процесс обновления, выполнив

lsof /var/lib/dpkg/lock

Убейте его, исправьте все прерванные обновления

dpkg --configure --pending

и перезапустите обновление.

Тедди
источник
3
Это безопасно с процессом do-release-upgrade?
Стивен Мелроуз
1
@ StefhenMelrose Это никогда не безопасно. Но это достаточно безопасный и единственный оставшийся вариант.
Тедди
2
лучший ответ между многими о том, как исправить обновление apt-get, прерванное по истечении времени ожидания сеанса замазки ... успешно протестировано, спасибо!
Кожо
and restart the upgradeШаг не работает в моем случае (я потерял SSH сессию во время do-release-upgrade14.04 -> 16.04). Что делать , вместо этого , как последний шаг , чтобы завершить обновление релиза , sudo apt autoremoveа затем sudo shutdown -r now.
Руслан Стельмаченко
Нашел более полный ответ здесь, за которым я следовал. askubuntu.com/questions/219545/…
lacostenycoder
4

cryopid (найденный через этот вопрос ) может помочь, если текущий «один процесс, а не дерево процессов» не является проблемой в этом случае.

Файлы могут быть заблокированы, потому что процесс был убит бесцеремонно, и у него не было возможности очистить после себя, поэтому убедитесь, что aptitude все еще работает. Используйте, lsof /var/lib/dpkg/lockкак предложено в ответе Тедди, чтобы проверить - это скажет вам pid, чтобы тоже попробовать криопид.

В будущем я рекомендую пробовать проходить через экран везде, где это возможно. Я приобрел привычку экрана (или byobu, который является оберткой вокруг экрана, который определяет некоторые полезные поведения), являясь первым, что я запускаю, когда SSHing куда-либо, затем я могу восстановить соединение, если есть проблемы. Вы можете настроить его на автоматический запуск или повторное подключение, хотя я никогда не удосужился сделать это где-либо - есть несколько примеров в Интернете ( например, этот ), если вы хотите попробовать это.

Дэвид Спиллетт
источник
1
Между прочим, я выгрузил это и сделал do-release-upgrade поверх ssh, используя byobu, но когда был обновлен byobu, это убило мою сессию! Интересно, если бы использование экрана напрямую предотвратило бы это. Но другой ответ на этот вопрос ответил на мою ситуацию, похоже, что установщик умен и все равно запускает свой собственный сеанс экрана: D
Ибрагим