Ubuntu 18.10 - Unattended-upgrades-shutdown --wait-for-signal

我有一个在命令行中列出的htop进程,其命令如下所示

/usr/bin/python3 /usr/share/unattended-upgrades/unattended-upgrade-shutdown --wait-for-signal

根据:

--wait-for-signal

以及对unattended-upgrades进行了一些研究,我认为还有其他需要更新的东西,所以我尝试了几次关闭服务器,运行了:

 sudo unattended-upgrade

以下是我的翻译:

我按照这些步骤操作,但即使系统已经是最新版,问题仍然存在。

它只是用来检查是否有其他升级需要吗?

我应该担心这个问题还是将其保持不变呢?

提前致谢。

2个回答

这是一个安全功能,请不要动它。

如果系统在运行apt时突然停止(关机),会导致apt数据(软件包和元数据)损坏。无人值守更新关机脚本临时禁止关机信号,直到apt完成。

该脚本无法防止由于突然断电或按住电源按钮而导致的损坏,此时apt可能正在运行。这是避免上述情况并定期备份的另一个原因。

该脚本使用Python编写,包括开发者的注释。请随意阅读并自行查看。


6为什么“unattended-updates”不仅在更新实际运行时才禁止关机,而是始终存在一个单独的阻止进程呢? - Andrey Vihrov
1我运行了apt update。已经过去了5分钟(全新的20.04安装),它仍在运行,并且状态文件中显示:"进度:80.0%(libnss3)",位于文件/var/run/unattended-upgrades.progress。它还需要多长时间才能完成? - tgkprog
7为什么要用Python来实现呢?即使在ARM Debian上也需要占用10MB的内存。这听起来不像是一种高效的Linux方法,更像是匆忙拼凑出来的东西。 - Vincent Alex
3@VincentAlex 之所以选择用Python实现是因为开发者选择了Python来进行实现。这是一款开源软件,任何参与者(包括你)都可以贡献真正的改进。 - user535733

我最近也遇到了同样的问题,在我的镜像制作过程中检查后台是否运行了未经授权的升级。基本上,我会等待apt锁被释放,然后继续进行更新。
我以前运行的是:
while pgrep unattended; do sleep 10; done;

在执行任何脚本之前,请注意,由于未经事先通知的升级进程(unattended-upgrades)正在运行,我尝试使用apt安装/升级/更新时可能会出现dpkg锁定错误。因此,我询问了如何正确检查后台中的未经事先通知的升级工作,并且IRC上的TJ-给了我一个非常优雅的解决方案!在引导脚本忙碌时禁用未经事先通知的升级服务,如下:

systemctl mask unattended-upgrades.service
systemctl stop unattended-upgrades.service

完成烘焙后,请重新启用:
systemctl unmask unattended-upgrades.service
systemctl start unattended-upgrades.service

此外,您可以运行此命令以确保不会过早启动您的进程:
while systemctl is-active --quiet unattended-upgrades.service; do sleep 1; done

可能不是你在找的,但对我来说非常有帮助。这可能与以下相关:https://bugs.launchpad.net/ubuntu/+source/unattended-upgrades/+bug/1803137

systemctl stop unattended-upgrades.service 停止运行 unattended-upgrade-shutdown 而不是升级程序。 - tekumara