¿Existe un módulo de Python para lsof?

¿Existe un módulo de Python para lsof?

Cada vez que intento actualizar mi Kali Linux ejecutando

sudo apt update

Recibo el siguiente mensaje de error

Unable to lock directory /var/lib/apt/lists/

La forma en que soluciono este problema es buscando procesos ejecutando

lsof /var/lib/dpkg/lock
lsof /var/lib/apt/lists/lock
lsof /var/cache/apt/archives/lock

y matar los procesos que han adquirido los bloqueos.

Me gustaría automatizar el proceso.

Respuesta1

La respuesta a la pregunta que deberías haber hecho

Esta no es una buena idea. No debes matar procesos a ciegas. Descubra qué proceso tiene el archivo bloqueado y por qué.

Además, si tienes este problema con frecuencia, probablemente estés haciendo algo mal. Kali Linux es una distribución especial para pruebas de penetración. No está diseñado para ser instalado.Para hacer cualquier cosa que no sea una prueba de penetración, no utilice Kali. Utilice una distribución normal como Ubuntu.

Cómo encontrar un proceso que tiene un archivo abierto en Python

Puedes usar elpsutilpaquete para enumerar procesos y enumerar los archivos que tienen abiertos.https://stackoverflow.com/questions/20106220/check-for-open-files-with-python-in-linuxtiene un ejemplo de código.

Para enumerar simplemente los procesos que tienen un archivo abierto, puede ser más fácil analizar el resultado defuser.

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))

Respuesta2

No se puede bloquear el directorio /var/lib/apt/lists/

aptproporcionar apt-daily-upgrade.servicey apt-daily.serviceservicios, cuando esté habilitado, aptse ejecutará en segundo plano. versystemctl list-timers

para desactivarlo:

systemctl disable apt-daily.timer
systemctl disable apt-daily.service
systemctl disable apt-daily-upgrade.timer
systemctl disable apt-daily-upgrade.service

Debian:Actualizaciones desatendidas

información relacionada