服务器升级期间SSH连接丢失-如何重新连接到进程?


32

因此,我正在执行从11.04到11.10的Ubuntu服务器升级。

我在后台忘记了它,我的SSH客户端超时并断开连接(在Windows上为putty,如图)。我终端上的最后一件事是关于保留旧配置等的问题。

当我重新登录到服务器时,智能性文件已被另一个进程锁定,因此我认为此升级过程位于此处等待我的输入。

如何与该过程进行交互并继续升级?如果可能的话。

谢谢


Answers:


36

该过程实际上以root用户身份在屏幕或byobu会话中运行。用端口22上的腻子或故障保护1022重新连接到服务器。sudo su-或su-进入您的root帐户,并使用byobu或screen -r恢复屏幕,并在您离开的位置恢复。

哦,是的,我发现了困难的方法;-)


1
哇,谢谢!我实际上是在byobu上进行了从11.10到12.04的发行版升级,然后在byobu升级时它关闭了,但是我能够重新连接到根屏幕会话并观看升级完成!我几乎试图强行取消升级,但幸运的是我及时阅读了此回复。
Ibrahim

3
在停滞的安装中,它说屏幕已经安装好了,所以我强制屏幕分离,我可以重新安装了。该命令是screen -D信息,来自这里:kb.iu.edu/data/ahrm.html
David

1
使用screen -r <id>也可以,并且您只需键入ID的几个字符即可使用。
丹尼尔(Daniel)

1
这对我不起作用,因为它说screen没有安装。
starbeamrainbowlabs

1
较新的Ubuntu的使用sudo screen -D -rsudo su -(如果不是根目录)。
bshea

34

你不能 通过执行以下操作查找升级过程

lsof /var/lib/dpkg/lock

杀死它,修复任何中断的升级

dpkg --configure --pending

然后重新启动升级。


3
这个过程安全do-release-upgrade吗?
Stephen Melrose

1
@StephenMelrose从不安全。但这是相当安全的,并且是唯一剩下的选择。
泰迪

2
关于如何解决因腻子会话超时而中止的apt-get升级的最佳答案...已成功测试,谢谢!
Kojo 2015年

and restart the upgrade步骤不适用于我的情况(在do-release-upgrade14.04-> 16.04 期间丢失了ssh会话)。作为完成发行版升级的最后一步,我要做的是sudo apt autoremove然后sudo shutdown -r now
Ruslan Stelmachenko

在这里找到了更完整的答案,我跟随升级自动终止。 askubuntu.com/questions/219545/…–
lacostenycoder

4

除非在这种情况下当前的“一个进程,而不是一棵进程树”成为问题,否则cryopid(通过此问题找到)可能会有所帮助。

这些文件可能被锁定,因为该进程被毫不客气地终止了,并且没有机会自行清理,因此请确认aptitude实际上仍在运行。使用lsof /var/lib/dpkg/lock在Teddy的回答表明,检查-这将告诉你PID到cryopid上也试试。

将来,我建议尽可能尝试通过屏幕运行。我已经习惯了使用screen(或byobu,它是定义了一些有用行为的屏幕包装)的习惯,这是我通过SSH进行连接时首先要执行的操作任何地方然后在出现问题时可以重新连接。您可以将其设置为自动启动或重新连接,尽管我从来没有在任何地方做过此操作- 如果您想尝试一下,可以在线查看许多示例(例如,这个示例)。


1
顺便说一句,我抢占了先机,并通过byobu在ssh上进行了do-release-upgrade,但是当byobu升级后,它杀死了我的会话!我想知道是否直接使用屏幕会阻止这种情况。但是这个问题的另一个答案回答了我的情况,似乎安装程序很聪明并且无论如何都运行自己的屏幕会话:D
Ibrahim 2013年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.