每次我嘗試透過運行來更新我的 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
德班:無人值守升級