Каждый раз, когда я пытаюсь обновить свой 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
provide apt-daily-upgrade.service
и apt-daily.service
services, если они включены, 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
Дебиан:Автоматические обновления