运行 apt Upgrade 时 SSH 管道损坏。我能做什么呢?

运行 apt Upgrade 时 SSH 管道损坏。我能做什么呢?

我已连接到我的 aws debian wheezy 服务器,但在运行时apt-get upgradessh 管道中断了。我没有使用screen任何东西,所以我认为没有办法恢复该会话。

如果我重新连接新的 ssh 会话并运行ps aux | grep apt,我可以看到apt并且dpkg仍在运行

他们实际上已经跑了好几个小时了。我无法想象杀死这些进程是安全的,因为它们可能正在修改系统库/二进制文件,但我能做什么?如果他们正在等待键盘输入等怎么办?我最初要求我安装更新y时说过,但我不知道是否需要进一步的用户输入。apt我计划再等几个小时,dpkg希望能完成他们正在做的事情……但如果没有任何反应,我有什么选择?

答案1

您无法重新获得会​​话。所以你无法做任何事情来与这个过程交互。

我不认为该进程正在运行。我想这apt-get可能已经成为僵尸目前为止。无论如何,您可以使用ps或检查进程top。如果它正在运行,则放开并监视它以完成。如果它保持闲置状态,就杀死它。

然后你可以简单地运行apt-get upgrade 再次终止进程后,完成或修复会话崩溃时正在升级的任何包。

答案2

SIGINT我认为向他们发送一个(键盘中断,即Ctrl+C)信号就可以了:

killall -SIGINT apt-get

或者

killall -2 apt-get

您也可以尝试做两次或更多次

答案3

你可以尝试重新连接会话用像这样的工具雷普特尔,但这并不总是有效。

您可以随时杀死 和它们的子进程aptdpkg所有套件维护任务都应该能够抵抗突然断电的情况。再次运行该命令即可完成。

确保向 APT 和 dpkg 发送 SIGINT 或 SIGTERM 信号,而不是 SIGKILL。 SIGKILL 会将锁定文件保留在原处。这是一个一般原则:当 SIGINT 可以使用时,不要使用 SIGKILL。

答案4

这帮助我在未来做得更好:使用“屏幕”

这篇 Debian 帖子帮助我解决了我的严重问题:

https://wiki.debian.org/Teams/Dpkg/FAQ

sudo fuser -vki -TERM /var/lib/dpkg/lock /var/lib/dpkg/lock-frontend

sudo dpkg --configure --pending

相关内容