Primeiro de tudo, devemos verificar qual processo criou o arquivo de bloqueio usando lsof
:
sudo lsof /var/lib/dpkg/lock
ou em outra situação em que /var/lib/apt/lists/lock
seja problemático:
sudo lsof /var/lib/apt/lists/lock
A saída será próxima de algo como:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
apt-get 12127 root 4uW REG 252,1 0 86 /var/lib/apt/lists/lock
Então, devemos verificar o que o commad está fazendo, podemos encontrá-lo usando ps
, pgrep
etc; o comando é apt-get
, então eu corro:
pgrep apt-get -a
A opção -a
lista o comando completo para mim. No meu caso, é:
pgrep -a apt-get
12127 apt-get update
podemos ver que ele está executando update
subcomando, eu poderia executar algo assim também:
ps -f 12127
que produz:
UID PID PPID C STIME TTY STAT TIME CMD
root 12127 12126 0 09:39 pts/0 S+ 0:00 apt-get update
Neste caso eu esperaria alguns minutos para o recurso ser liberado e se após 2 ou 3 minutos ainda existir problema ou o comando fosse algo que eu não me importava ou não era prejudicial para o sistema (como este apt-get update
) Eu envio um SIGTERM
para o processo:
sudo kill -15 12127
Ele deve fazer o trabalho, se não eu vou enviar SIGINT
desta vez (É como pressionar CTRL + C ):
sudo kill -2 12127
Se não funcionasse também, deveríamos enviar um SIGHUP
( kill -1
) e, finalmente, se nada funcionar, eu simplesmente mato o processo:
sudo kill -9 12127
ou
sudo pkill -9 apt-get
Em seguida, removemos recursos ocupados:
sudo rm /var/lib/apt/lists/lock