每次我尝试通过运行来更新我的 Kali Linux 时
sudo apt update
我收到以下错误消息
Unable to lock directory /var/lib/apt/lists/
我解决这个问题的方法是通过运行来查找进程
lsof /var/lib/dpkg/lock
lsof /var/lib/apt/lists/lock
lsof /var/cache/apt/archives/lock
并杀死已获取锁的进程。
我想自动化这个过程。
答案1
您应该问的问题的答案
这不是一个好主意。您不应该盲目地终止进程。找出哪个进程锁定了文件以及原因。
此外,如果您经常遇到此问题,则可能是您做错了什么。 Kali Linux 是一个用于渗透测试的专用发行版。它不是为安装而设计的。要执行渗透测试以外的任何操作,请勿使用 Kali。使用正常发行版,例如 Ubuntu。
如何在 Python 中查找打开文件的进程
您可以使用psutil
包来枚举进程并枚举它们已打开的文件。https://stackoverflow.com/questions/20106220/check-for-open-files-with-python-in-linux有一个代码示例。
要仅枚举打开文件的进程,解析以下命令的输出可能会更容易fuser
。
import os, subprocess
try:
pids = subprocess.check_output(['fuser', '--', filename], stdout=open(os.devnull))
for pid in map(int, pids.split()):
print('Process {} has {} open'.format(pid, filename))
答案2
无法锁定目录 /var/lib/apt/lists/
apt
提供 apt-daily-upgrade.service
和apt-daily.service
服务,启用apt
后将在后台执行。看systemctl list-timers
禁用它:
systemctl disable apt-daily.timer
systemctl disable apt-daily.service
systemctl disable apt-daily-upgrade.timer
systemctl disable apt-daily-upgrade.service
德班:无人值守升级