在脚本中安装应用程序之前,我需要检查 dpkg 锁

Nok*_*oki 4 apt dpkg scripts software-installation

我写的安装一堆应用程序的脚本有问题,基本上是因为它循环遍历一系列应用程序名称来安装它通过执行以下操作来检查它们:

dpkg -l | grep -q $i
Run Code Online (Sandbox Code Playgroud)

并基于 $? 将安装或跳过该应用程序。问题是一些项目由于 dpkg 锁定而失败,几乎整个列表都可以工作,只有六个失败,但如果您再次运行脚本,则可以工作。

是否可以在运行“apt-get install”之前等待 dpkg 完成?

现在我在 2 行之间添加了一个“睡眠 0.5”,这已经停止了问题,但显然是丑陋和缓慢的。

谢谢,诺基

Rad*_*anu 10

要使用文件或套接字识别进程,您可以使用fuser命令(man fuser有关更多信息,请参见)。如果是dpkg,您可以使用以下命令以 root 身份检查锁定:

fuser /var/lib/dpkg/lock
Run Code Online (Sandbox Code Playgroud)

  • 你对[这个问题](http://askubuntu.com/questions/132059/how-to-make-a-package-manager-wait-if-another-instance-of-apt-is-running)的回答很多更好/有用的 IMO。 (3认同)