情况是,每当我启动我的 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
重新启动可能更有利于测试行为。
或者....什么也不要做,只需等待更新完成。