Как проверить & ldquo; apt-get upgrade & rdquo; статус после потери соединения ssh?

Обычно я обновляю установку Ubuntu через ssh-соединение. Иногда это соединение SSH будет потеряно, или я случайно закрою окно терминала.

Можно ли проверить состояние обновления после повторного входа в систему через ssh?

16
задан 7 December 2012 в 12:48

5 ответов

Чтобы увидеть вывод в реальном времени из фонового задания apt, используйте:

sudo tail -f /var/log/apt/term.log
0
ответ дан 7 December 2012 в 12:48

В дополнение к ответу двойного повстанца, я заметил сегодня альтернативу.

Я пошел спать прошлой ночью после начала обновления по SSH. Я тупо забыл запустить его в screen и потерял сеанс SSH в одночасье.

Я как раз собирался начать исследование retty, когда заметил, что root начал сеанс screen.

me@GAMMA:~$ ps aux | grep -E 'release|upgrade|apt'
root      6208  0.0  0.0  29140  1628 ?        Ss   01:57   0:05 SCREEN -e \0\0 -L -c screenrc -S ubuntu-release-upgrade-screen-window /tmp/ubuntu-release-upgrader-1h6_g4/raring --mode=server --frontend=DistUpgradeViewText
root      6209  0.2  5.6 287428 93144 pts/2    Ss+  01:57   3:13 /usr/bin/python /tmp/ubuntu-release-upgrader-1h6_g4/raring --mode=server --frontend=DistUpgradeViewText
root      6239  0.0  0.0  50052  1184 ?        Ss   01:58   0:00 /usr/sbin/sshd -o PidFile=/var/run/release-upgrader-sshd.pid -p 1022
root      7306  0.0  4.6 287432 77284 pts/2    S+   02:43   0:08 /usr/bin/python /tmp/ubuntu-release-upgrader-1h6_g4/raring --mode=server --frontend=DistUpgradeViewText
me       26829  0.0  0.0   9440   956 pts/5    S+   22:18   0:00 grep --color=auto -E release|upgrade|apt

Итак, я перечислил экраны root и прикрепил к ним:

me@GAMMA:~$ sudo screen -list
There is a screen on:
        6208.ubuntu-release-upgrade-screen-window       (12/11/2013 01:57:58 AM)        (Detached)
1 Socket in /var/run/screen/S-root.
me@GAMMA:~$ sudo screen -x -r

И Бэм! Я вернулся в игру.

0
ответ дан 7 December 2012 в 12:48

Следующие журналы связаны с подходящими обновлениями:

/var/log/apt/history.log
/var/log/apt/term.log
/var/log/dpkg.log

Если команда была dist-upgrade, есть дополнительные журналы в:

/var/log/dist-upgrade

FYI, обычно это безопасно просто повторно запустить обновление и apt продолжит с того места, на котором он остановился, когда процесс остановился из-за отключения. Однако ...

Учебник по экрану GNU:

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

Экран установки:

sudo apt-get install screen

Рабочий экран:

screen

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

sudo apt-get upgrade

Чтобы понять, как это работает, «отсоедините» экран, нажав Ctrl + a, d . Это вернет вас к неэкранному терминалу. Вы можете увидеть список запущенных экранов с помощью

screen -list

Если у вас работает только один экран, вы можете подключить его с помощью:

screen -raAd

(Это отсоединяет экран, если он подключен в другом месте и подключите его к терминалу, на котором вы сейчас работаете.)

Обычно вы не можете прокручивать «нормально» изнутри экрана без какой-либо дополнительной настройки. Для прокрутки на экране нажмите Ctrl-Esc , чтобы войти в режим курсора. Затем вы можете прокрутить вниз и вверх с помощью j и k . Нажмите Esc еще раз, чтобы выйти из режима курсора.

В сети доступно гораздо больше ресурсов для дополнительных функций экрана. Это бесценный стандартный инструмент для системного администрирования.

См. Также:

0
ответ дан 7 December 2012 в 12:48

У меня была точно такая же проблема, я потерял связь, и процесс dpkg ждал ввода.

Может быть, в следующий раз попробуйте: sudo dpkg --configure -a

0
ответ дан 7 December 2012 в 12:48

TL;DR: после потери ssh-соединения у вас может появиться недоступное диалоговое окно консоли, блокирующее продолжение обновления. Убейте процесс whiptail, чтобы он мог продолжить работу.

У меня была похожая проблема, и хотя некоторые ответы были полезными, они не помогли мне решить мою проблему. Но между ответом @Huckle и вторым комментарием @CivMeierFan к ответу @Sebastian Faujour я нашел свой путь вперед.

«ps aux | grep -E 'release|upgrade|apt'» показал процесс whiptail (также показанный с «/var/log/apt/term.log», но в этом случае он только что выдал непригодное консольное приглашение. Полезно понять, почему обновление было заблокировано, но бесполезно для решения проблемы).

Уничтожение процесса whiptail позволило продолжить обновление.

0
ответ дан 8 January 2021 в 22:32

Другие вопросы по тегам:

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