O volume não pode ser ejetado porque está em uso no momento


100

Depois de trabalhar com um disco de backup USB externo, quero desmontar a unidade de maneira limpa. Ao pressionar o botão 'ejetar', o Finder me avisa com a mensagem:

  • " O volume não pode ser ejetado porque está em uso no momento. "

ou

  • " O disco" Diskname "não foi ejetado porque um ou mais programas podem estar usando - o. ".

ou ao tentar usar o terminal: umount /Volumes/Diskname

  • " umount (/ Volumes / Diskname): Recurso ocupado - tente 'desmontar diskutil' "

Tanto quanto sei, não estou usando esse disco, mas o Finder diz que sim, então devo estar errado. Eu prefiro uma desmontagem limpa da unidade. Como estou no meio de várias tarefas, desconectar e desconectar não é o preferido, assim como a instalação de software de terceiros.

O comando terminal lsofpode ser útil aqui, mas pessoalmente acho que isso é muito complexo para um problema "simples" e, para ser sincero, não sei como usá-lo corretamente.

Minha pergunta: como sei que programa está usando minha unidade para que eu possa sair corretamente e ejetar minha unidade?

O volume não pode ser ejetado porque está em uso no momento. O disco "Camel" não foi ejetado porque um ou mais programas podem estar usando-o. O disco "Mammtoh" não foi ejetado porque um ou mais programas ... xkcd


2
"Pelo que sei, não estou usando esse disco, mas o Finder diz que sim, então devo estar errado." Você confia demais nas máquinas. ;-) Muitas vezes, os computadores estão errados e nós, humanos, estamos certos.
Nicolas Barbulesco

Então, o que você está dizendo é que eu estou certo? ;)
CousinCocaine


2
E se Spotlight é o culpado, poupar algum repetição: apple.stackexchange.com/a/211616/15417
John2095

Respostas:


130

lsofé realmente sua melhor aposta. A maneira mais rápida e fácil seria esta: -

sudo lsof /Volumes/myDrive

Pode levar alguns minutos para ser executado, mas, uma vez concluído, ele fornece uma lista de arquivos abertos no disco. A saída será mais ou menos assim:

COMMAND    PID  USER   FD   TYPE DEVICE SIZE/OFF  NODE NAME
mds         89  root   19r   DIR   52,3      432     2 /Volumes/Photos
mds         89  root   23r   DIR   52,3      432     2 /Volumes/Photos
Finder     681 alans   14r   DIR   52,3      432     2 /Volumes/Photos
QuickLook 2158 alans    9r   REG   52,3  1141591 78651 /Volumes/Photos/_tmp_iphone_10_backup/APC_1546.JPG  

Nesse caso, é o QuickLookaplicativo que possui um arquivo aberto. Fechar o aplicativo diretamente é a melhor maneira de corrigir o problema. No entanto, isso nem sempre é possível. Por exemplo, o QuickLook não aparece como um aplicativo que você pode acessar no Dock.

Se você não conseguir fechar o aplicativo manualmente, poderá usar o killcomando para finalizá-lo na linha de comando. Para fazer isso, use o PIDda segunda coluna como o ID para matar. Do exemplo acima, seria:

kill 2158

Observe que às vezes isso não funciona e uma forma mais agressiva de killdeve ser usada. Aqui está uma série de agressividade crescente (usando o exemplo PID de 2158):

kill 2158
sudo kill 2158
sudo kill -INT 2158
sudo kill -KILL 2158

Você deve poder ejetar o disco depois que o processo / aplicativo for finalizado.

Uma nota final, lsofpode demorar um ou dois minutos. Também pode travar, mas você deve esperar pelo menos alguns minutos antes de decidir que foi o que aconteceu.

Além disso, às vezes o comando base sudo lsof /Volumes/myDrivenão encontra nada. Se isso acontecer, tente adicionar o +Dargumento (ie sudo lsof +D /Volumes/myDrive). Isso fará uma verificação de cima para baixo do disco. Vai levar mais tempo, mas deve pegar qualquer coisa que esteja causando a injeição do disco.

( Dica para o post de Alec Jacobson para obter detalhes adicionais. )


1
Encontrei isso também, mas esperava que alguém tivesse uma solução não terminal. Se não, você vai ter o seu mais um;)
CousinCocaine


3
→ Paul: eu sugiro que você melhore o comando sugerido como:/usr/bin/sudo lsof /Volumes/myDrive
dan

3
Oh, excelente, eu fiz lsof sem sudo, o que fornece um conjunto de resultados totalmente diferente.
Alper

2
Sim, o sudo é definitivamente necessário em muitos casos. No meu caso, isso revelou que o Spotlight estava tentando indexar o disco, então a solução foi desativar o Spotlight para o disco e parar / reiniciar manualmente o Spotlight.
Tom

30

Você já tentou $ diskutil unmount /Volumes/Diskname?

Ou $ diskutil unmount force /Volumes/Diskname?

Como a página de manual indica:

Devido à natureza complexa e entrelaçada do Mac OS X, uma quantidade pode falhar com frequência. É recomendável que o diskutil (1) (como em "diskutil unmount / mnt") seja usado.

Se o seu volume tiver espaços no nome, não se esqueça de escapar dos espaços com \, por exemplo:

$ diskutil unmount /Volumes/Disk\ Name

Ou use aspas para evitar confusão.

$ diskutil unmount "/Volumes/Disk Name"

1
Acredito que tentei isso e não funcionou. Mas da próxima vez vou tentar novamente e atualizar minha postagem de acordo.
CousinCocaine

Seu exemplo tem aspas, não apóstrofes. O que é uma boa coisa.
Nicolas Barbulesco

1
@NicolasBarbulesco: Obrigado por apontar isso, fiz correções na resposta. Boa pegada!
Jason Robinson

1
Trabalhou -> sudo diskutil desmontar força / Volumes / diskname
tgkprog

1
@tgkprog Fico feliz em ouvi-lo, também obrigado pelo sudocomando, que pode ajudar outras pessoas também.
Jason Robinson

15

Seu problema provavelmente é causado pelo processo  mds : Spotlight indexando seu disco.

Eu tenho esse problema e ainda não encontrei uma solução.


Isto é como desabilitar / reativar a indexação de spotlight: iclarified.com/49187/…
rstackhouse

Eu também achei esse serviço mds usando. Tentei desativar o serviço mds da unidade flash usando "sudo mdutil -i off / Volumes / 16GB", mas também não ajudou. Eu tive que reiniciar o Finder usando "Option + Click" no FInder.
Aruna

6

Você pode tentar o aplicativo donationware " O que está me mantendo? ", Que mostra qual processo / aplicativo está usando o volume / pasta / arquivo.

Este programa é certificado pelo desenvolvedor para o Mac OS X 10.6 Snow Leopard, mas a página RoaringApps para este aplicativo o relaciona como funcionando bem no OS X 10.7 Lion e no OS X 10.8 Mountain Lion.

Sobre o que está me mantendo?

Você já teve o problema de não poder esvaziar a lixeira ou ejetar um disco porque algo está impedindo você? Geralmente, o motivo é que algum aplicativo tem um arquivo aberto e, portanto, você não pode se livrar do disco ou fazer com que o arquivo seja descartado. Foi por isso que fizemos o What's Keeping Me! O que está me mantendo identificará o aplicativo que está mantendo o item aberto. Você pode usar o What's Keeping Me para sair do aplicativo com problemas (ou eliminá-lo, se necessário) para poder executar sua tarefa. O What's Keeping Me inclui um fluxo de trabalho do Automator para que você também possa realizar pesquisas diretamente no Finder!


1
Parece um software válido, mas eu realmente prefiro as soluções nativas do OS X.
CousinCocaine 10/10

Por nativo, você quer dizer algo que a Apple fornece? Não há nada disso na frente da GUI. Além disso, a WKM existe há vários anos.
MK

Obrigado pela sua adição. Nativo não é a palavra correta, o que eu quis dizer foi 'não-terceiro'. WKM é uma boa solução, mas pessoalmente prefiro lsof.
CousinCocaine 14/10

Acabei de testar o aplicativo em High Sierra e ele ainda funciona. Também é de 64 bits.
Dianeoforegon

4

Recebi essa mensagem apesar de ter certeza de que não há arquivos abertos no volume . Eu verifiquei isso com o Why Not Unmount , uma ferramenta da GUI que pode indicar arquivos abertos em um disco.

No meu caso, era um sinal de que o sistema de arquivos está corrompido. A execução do Disk Utility (ou, se isso não bastasse, o DiskWarrior) resolveu o problema e tornou o disco ejetado novamente.


1
No meu caso, o sistema não estava corrompido.
CousinCocaine

Parece improvável. Provavelmente, o Spotlight ou algum outro aplicativo ou serviço possui um bloqueio no disco.
Tom

3

Tanto a solução de linha de comando quanto o What's Keeping Me funcionam muito bem.

Para recapitular, a linha de comando no terminal é:

lsof | grep /Volumes/myDrive

O aplicativo GUI é o What's Keeping Me, disponível na Hamsoft Engineering .

Capturas de tela de ambos com a mesma pesquisa em andamento.

Saída da linha de comando GUI para o que está me mantendo

Eu prefiro a linha de comando apenas um pouco, pois está sempre lá com você. Por outro lado, o What's Keeping Me é mais rápido e fácil de usar, se você o tiver instalado.


3

NOTA: fseventerfunciona até o OS X 10.10 Yosemite e a página do desenvolvedor http://www.fernlightning.com ficarem offline. Portanto, os links do produto foram removidos. Com brew cask install fseventerele, ainda pode estar disponível nas versões anteriores do macOS.

Há uma alternativa de GUI para o aplicativo CLI lsof:
fseventeré um ótimo utilitário de monitoramento de acesso ao sistema de arquivos para vários propósitos . Ele é executado com permissões de superusuário ( sudo), portanto, ele vê todos os acessos de leitura / gravação de todos os sistemas de arquivos montados e os apresenta em uma visão muito clara.

Minha experiência: eu tinha um volume que constantemente não podia ser ejetado adequadamente (como nas capturas de tela do OP) e sempre precisava de uma "ejeção forçada", às vezes até uma desconexão física forte (nem recomendada! Poderia danificar seu sistema de arquivos) disco) ou um desligamento do sistema para ignorar esse método bruto.

Minha correção: Resumido: o problema de ejeção pode ser causado por conteúdo de arquivo herdado ou corrompido nesse volume. A remoção do conteúdo problemático pode corrigir isso permanentemente. Em detalhe:

  1. Determine qual arquivo é acessado (com lsofou fseventer). No meu caso, era um arquivo Classic Mac OS com uma bifurcação de recursos que permanecia aberta, provavelmente porque havia algum processo de análise de disco em segundo plano (Spotlight, QuickLook ou similar).

  2. Faça backup desses dados problemáticos em um arquivo morto (que preserva dados de recursos específicos do Mac (clássico)). Eu simplesmente usei a função "Compress" nativa do Finder no menu de contexto.

  3. Exclua o arquivo / pasta com problemas.

    • Com o Finder, como de costume. Provavelmente isso falhará, pois é um "arquivo / pasta com problemas".
    • Com o Finder plus, mantenha pressionada a tecla ALT enquanto esvazia o Lixo. Isso cria um pouco mais de força, mas provavelmente ainda falhará.
    • Pelo terminal com sudo rm -R /path/to/troublesome/FileOrFolder. Isso acabou funcionando após as tentativas de exclusão do Finder falharem.
  4. Tente desmontar o volume novamente. Ele ainda pode falhar, pois os processos em segundo plano, que falharam, ainda podem estar em um estado irrecuperável .

  5. Reiniciar. Em seguida, tente desmontar novamente. A partir de então, o volume funcionou bem novamente. Operações normais de montagem, desmontagem, leitura / gravação. Somente quando um arquivo foi realmente aberto por um processo do usuário, a desmontagem foi impedida. Comportamento perfeitamente normal novamente.


1

Solução Verifique se todos os programas estão fechados. Clique no ícone Apple no canto superior esquerdo da tela e clique em Forçar encerramento. Na lista, clique em Localizador. Agora clique no botão Relançar. Em seguida, tente ejetar a unidade novamente.


Você viu essa solução funcionar?
Nicolas Barbulesco

1

Tente reiniciar o Finder. Aqui trabalha


Não tenho certeza por que isso foi rebaixado; No meu caso, o QuickLook e o mds mantiveram o controle (apesar de não haver janelas do localizador ativo). Eu poderia reiniciar o mds, mas qlmanage -rdisse que estava "redefinindo o quicklookd", mas ainda mantinha o arquivo aberto de acordo com lsof +D /path/to/volume. Um relançamento do localizador esclareceu tudo e eu pude ejetar o volume.
AC Capehart

-2

Eu reiniciei meu Mac e o consertei :-)


1
Eu prefiro uma desmontagem limpa da unidade. Como estou no meio de várias tarefas, desconectar e desconectar não é o preferido, assim como a instalação de software de terceiros.
CousinCocaine
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.