Unbuntu apt-get update 总是无法获取锁定,因为它被进程 xxxx 持有?

Unbuntu apt-get update 总是无法获取锁定,因为它被进程 xxxx 持有?

情况是,每当我启动我的 Ubuntu OS 笔记本电脑时,如果我运行 apt-get 命令,总是会出现以下信息:

无法获取锁 /var/lib/apt/lists/lock 。它由进程 xxxx 持有

我尝试通过终止该进程 (sudo kill -9 ) 来解决问题,然后一切正常。但如果我启动,问题又会出现。

有人能针对我的情况提出什么建议吗?

非常感谢。

编辑:

当我运行时sudo apt-get update,错误是:

 Reading package lists... Done
 E: Could not get lock /var/lib/apt/lists/lock. It is held by process 1791 (apt-get)
 N: Be aware that removing the lock file is not a solution and may break your system.
 E: Unable to lock directory /var/lib/apt/lists/

每次我启动或关闭终端时,进程 ID 都会改变。

答案1

这是由无人值守升级引起的...它本身并不是一个“问题”....我不会“杀死它”....当你这样做时,不知道它处于进程的哪个阶段....你基本上是在更新期间让它断电。话虽如此,如果你一直这样做,这可能是你自己造成的,因为更新可能永远无法完成...并且会加剧。

但是,如果您想尝试让它等到其他时间,例如在启动后立即执行...您可以查看可以添加到配置中的参数,这些参数可以改变更新的时间。

我自己没有使用过这些,所以我没有看到它们的功能,并且从互联网上的混合结果来判断,它们可能有一些细微差别,所以你必须进行实验。

man systemd.timer属性的参考。

我将从 OnBootSec 设置开始,据我所知,包括每日计时器和每日升级计时器。

这些的调度在以下位置可见:
/lib/systemd/system/apt-daily.timer
/lib/systemd/system/apt-daily-upgrade.timer

显然您不需要编辑这些,您可以使用:
sudo systemctl edit apt-daily.timer
sudo systemctl edit apt-daily-upgrade.timer
...并创建一个 /etc/systemd/system/apt-daily.XXXXX.d/override.conf 文件,您可以在其中自定义计时器设置。

我会尝试用类似的东西进行测试

[Timer]
OnBootSec=60min
RandomizedDelaySec=2h

根据手册页,这应该在启动前、启动后 60 分钟内添加最多 2 小时的额外随机延迟......有很多计时设置可以使用。

将编辑保存到覆盖文件。
重新启动计算机或尝试重新启动服务
sudo systemctl daemon-reload
sudo systemctl restart apt-daily.service
sudo systemctl restart apt-daily-upgrade.service

重新启动可能更有利于测试行为。

或者....什么也不要做,只需等待更新完成。

相关内容