Підключення SSH, втрачене під час оновлення сервера - Як підключитися до процесу?


32

Отже, я виконував оновлення сервера Ubuntu з 11.04 до 11.10.

Я забув про це у фоновому режимі, і мій клієнт SSH вимкнувся та відключився (шпаклівка на Windows, перейти до малюнка). Останнє в моєму терміналі - питання про збереження старої конфігурації тощо.

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

Як я можу взаємодіяти з цим процесом і продовжувати оновлення? Якщо можливо.

Спасибі


Відповіді:


36

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

о та так, я дізнався важкий шлях ;-)


1
Дякую! Я фактично запускав оновлення випуску з 11.10 до 12.04 в byobu, а потім він закрився, коли byobu було оновлено, але мені вдалося знову підключитися до сеансу кореневого екрана і спостерігати, як оновлення закінчиться! Я ледь не спробував насильно вбити оновлення, але, на щастя, я вчасно прочитав цю відповідь.
Ібрагім

3
Після встановленої установки він сказав, що екран вже приєднаний, тому я змушую знімати екран, я можу повторно встановити. Команда екранна -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
@StephenMelrose Це ніколи не є безпечним. Але це досить безпечно і єдиний варіант, що залишився.
Тедді

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

кріопід (знайдений за допомогою цього питання ) може допомогти, якщо в цьому випадку проблема "один процес, а не дерево процесів".

Файли можуть бути заблоковані, оскільки процес був безцеремонно вбитий і не отримав шансу очиститись після себе, тому підтвердьте, що здатність насправді все ще працює. Використовуйте так, lsof /var/lib/dpkg/lockяк пропонується у відповіді Теді, щоб перевірити - це підкаже вам подругу також спробувати кріопід.

Надалі я рекомендую спробувати запустити через екран, де це можливо. Я створив звичку до екрану (або byobu, який є обгорткою навколо екрана, який визначає корисну поведінку), і це перше, що я запускаю, коли SSHing куди завгодно, тоді я можу знову підключитися, якщо є проблеми. Ви можете налаштувати його для автоматичного запуску або повторного вкладення, хоча я ніколи не робив цього робити ніде - є кілька прикладів в Інтернеті ( цей, наприклад, ), якщо ви хочете спробувати це.


1
Між іншим, я попереджав це і робив до-реліз-оновлення над ssh за допомогою byobu, але коли byobu було оновлено, це вбило мою сесію! Цікаво, якби використання екрана прямо не завадило б цьому. Але інша відповідь на це питання відповіла на мою ситуацію, схоже, інсталятор розумний і все одно запускає власний екран на сесії: D
Ібрагім
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.