Como superar o “dispositivo ou recurso ocupado”?

190

Eu tentei rm -rf de uma pasta e fiquei com "dispositivo ou recurso ocupado".

No Windows, eu teria usado o LockHunter para resolver isso. Qual é o equivalente do linux? (Por favor, dê como resposta um simples método "desbloquear este", e não artigos completos como este . é útil, estou atualmente interessado apenas em ASimpleMethodThatWorks ™)

    
por ripper234 13.04.2011 / 10:51

9 respostas

191

A ferramenta que você quer é lsof , que significa lista de arquivos abertos .

Tem muitas opções, por isso verifique a página man, mas se quiser ver todos os arquivos abertos num diretório:

lsof +D /path

Isso irá recorrer ao sistema de arquivos em /path , portanto, tome cuidado em grandes árvores de diretórios.

Depois de saber quais processos têm arquivos abertos, você pode sair desses aplicativos ou eliminá-los com o comando kill(1) .

    
por 13.04.2011 / 11:22
90

às vezes é o resultado de problemas de montagem, então eu desmonto o sistema de arquivos ou diretório que você está tentando remover:

umount /path

    
por 03.04.2014 / 03:24
12

Eu uso fuser para esse tipo de coisa. Ele listará qual processo está usando um arquivo ou arquivos dentro de uma montagem.

    
por 13.04.2011 / 16:32
11

Aqui está a solução:

  1. Entre no diretório e digite ls -a
  2. Você encontrará um arquivo .xyz
  3. vi .xyz e veja qual é o conteúdo do arquivo
  4. ps -ef | grep username
  5. Você verá o conteúdo .xyz na 8ª coluna (última linha)
  6. kill -9 job_ids - onde job_ids é o valor da segunda coluna do erro correspondente que causou conteúdo na oitava coluna
  7. Agora, tente excluir a pasta ou o arquivo.
por 19.06.2014 / 13:17
5

Eu tive esse problema quando um teste automatizado criou um ramdisk. Os comandos sugeridos nas outras respostas, lsof e fuser , não ajudaram. Após os testes, tentei desmontá-lo e excluir a pasta. Fiquei muito confuso por muito tempo, porque não consegui me livrar dele - continuei recebendo "Dispositivo ou recurso ocupado" !

Por acaso, descobri como me livrar de um disco ram. Eu tive que desmontar o mesmo número de vezes que eu tinha executado o comando mount , ou seja sudo umount path

Devido ao fato de ter sido criado usando testes automatizados, ele foi montado muitas vezes, por isso eu não consegui me livrar dele simplesmente desmontando-o uma vez após os testes. Então, depois de desmontar manualmente muitas vezes, ele se tornou uma pasta regular novamente e eu poderia deletá-lo.

Espero que isso possa ajudar alguém que tenha esse problema!

    
por 23.03.2017 / 13:56
5

Eu tive esse mesmo problema, construí um one-liner começando com a recomendação @camh:

lsof +D ./ | awk '{print $2}' | tail -n +2 | xargs kill -9

O comando awk agarra o PIDS. O comando tail elimina a primeira entrada irritante: "PID". Eu usei -9 no kill, outros podem ter opções mais seguras.

    
por 16.07.2015 / 19:31
2

Se você tiver o servidor acessível, tente

Deleting that dir from the server

Ou, umount e montar novamente, tente umount -l : preguiçoso se estiver enfrentando algum problema no umount normal.

Eu também tive esse problema onde

lsof +D path : não fornece saída

ps -ef : não fornece informações relevantes

    
por 01.08.2017 / 10:07
2

Riffing fora da pergunta de Prabhat acima, eu tive esse problema no macos high sierra quando eu encalhou um processo de encfs, reiniciar resolvido, mas isso

ps -ef | grep name-of-busy-dir

Me mostrou o processo e o PID (coluna dois).

sudo kill -15 pid-here

consertou.

    
por 04.04.2018 / 16:10
1

Eu experimento isso com frequência em servidores que possuem sistemas de arquivos de rede NFS. Estou assumindo que tem algo a ver com o sistema de arquivos, já que os arquivos são geralmente chamados de .nfs000000123089abcxyz .

Minha solução típica é renomear ou mover o diretório pai do arquivo, depois voltar mais tarde em um dia ou dois e o arquivo será removido automaticamente, ponto no qual estou livre para excluir o diretório.

Isso geralmente acontece em diretórios onde estou instalando ou compilando bibliotecas de software.

    
por 22.08.2018 / 20:42

Tags