失去ssh连接后如何检查“apt-get upgrade”状态?

Jos*_*ema 25 ssh apt

通常我通过 ssh 连接升级我的 Ubuntu 安装。有时这个 ssh 连接会丢失,或者我会不小心关闭终端窗口。

ssh 重新登录计算机后可以检查升级状态吗?

小智 41

以下日志与apt升级相关:

/var/log/apt/history.log
/var/log/apt/term.log
/var/log/dpkg.log
Run Code Online (Sandbox Code Playgroud)

如果命令是dist-upgrade,则还有其他日志:

/var/log/dist-upgrade
Run Code Online (Sandbox Code Playgroud)

仅供参考,重新运行升级通常是安全的,当进程因断开连接而终止时,apt 将继续从中断处继续。然而...

GNU 屏幕入门:

当通过 ssh 连接到远程服务器并在前台启动一个长时间运行的进程时,最好使用 GNU Screen。Screen 提供了一个虚拟终端,即使您的 ssh 连接丢失,该终端也能继续运行。

安装画面:

sudo apt-get install screen
Run Code Online (Sandbox Code Playgroud)

运行画面:

screen
Run Code Online (Sandbox Code Playgroud)

运行 screen 后,您将获得与普通终端一样的命令行提示。然后,您可以从内部屏幕运行升级:

sudo apt-get upgrade
Run Code Online (Sandbox Code Playgroud)

要了解其工作原理,请按Ctrl+a, d 来“分离”屏幕。这将使您返回到非屏幕终端。您可以使用以下命令查看正在运行的屏幕列表

screen -list
Run Code Online (Sandbox Code Playgroud)

如果您只运行一个屏幕,则可以使用以下命令重新附加它:

screen -raAd
Run Code Online (Sandbox Code Playgroud)

(这会分离屏幕,以防它连接到其他地方,并将其重新连接到您当前正在运行的终端。)

通常,如果没有一些额外的设置,您无法从屏幕内“正常”滚动。要在屏幕内滚动,请按Ctrl-Esc进入光标模式。然后,您可以使用jk上下滚动。再次按Esc退出光标模式。

网络上有更多资源可用于附加屏幕功能。它是系统管理的宝贵标准工具。

也可以看看:

  • +1 voor 实际回答问题并提及屏幕 :) (3认同)
  • 此外,`screen -x` - 附加到正在运行的屏幕而不分离其他屏幕,使屏幕会话成为“多人”。 (3认同)

Rus*_*lan 25

/var/log/apt/term.log当我的终端被另一个人关闭时,我正在进行升级(询问我是否保留或替换配置文件;此信息是我从 获取的)。重新启动时apt upgrade抱怨锁定文件被保留。

我的解决方法是执行以下操作:

sudo killall apt # to release the lock
sudo dpkg --configure -a # to fix the interrupted upgrade
sudo apt upgrade # to make sure no packages are left not upgraded
Run Code Online (Sandbox Code Playgroud)

  • 最佳答案,谢谢 (2认同)

Huc*_*kle 10

除了 doublerebel 的回答之外,我今天注意到了另一种选择。

在开始通过 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
Run Code Online (Sandbox Code Playgroud)

所以我列出了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
Run Code Online (Sandbox Code Playgroud)

还有巴姆!我又回到了比赛中。


小智 9

要查看后台apt作业的实时输出,请使用:

sudo tail -f /var/log/apt/term.log
Run Code Online (Sandbox Code Playgroud)

  • 这是正确的答案 - 上面的答案只是说明了一些有用日志的位置,然后切换到预防。这个答案向用户展示了在他们所谓的“重新登录”后要查看的位置以及如何查看它(“尾部”)。 (2认同)