我编写的用于安装一堆应用程序的脚本存在问题,基本上,当它循环遍历要安装的应用程序名称数组时,它会通过执行以下操作来检查它们:
dpkg -l | grep -q $i
并根据 $? 安装或跳过应用程序。问题是由于 dpkg 锁定导致一些项目失败,几乎整个列表都有效,只有六个项目失败,但如果您再次运行脚本,它们就会有效。
是否可以等待 dpkg 完成后再运行“apt-get install”?
现在我在两行之间添加了“sleep 0.5”,这虽然解决了这个问题,但显然比较丑陋和缓慢。
谢谢,Noki
答案1
要识别使用文件或套接字的进程,您可以使用fuser
命令(man fuser
有关详细信息,请参阅)。如果是dpkg
,您可以使用以下命令以 root 身份检查锁:
fuser /var/lib/dpkg/lock