Guias/O disco não ejeta

O Mac não ejeta um disco externo? Como descobrir o que o está usando

Atta 🐬

Fundador do Vitals

Publicado em

Resposta rápida

Um disco não ejeta enquanto algum processo tiver um arquivo ou uma pasta aberta nele. Encerre os apps que o usaram, feche as janelas do Terminal paradas nas pastas dele e tente de novo. Se não der certo, rode sudo lsof /Volumes/NAME no Terminal para listar cada processo que o prende, e encerre-os. O Spotlight e o Time Machine soltam o disco sozinhos, geralmente em até um minuto. Forçar Ejeção é o último recurso, porque um arquivo sendo gravado pode ser danificado. O Vitals, um monitor de atividade e inspetor de processos para o Mac, lista cada disco com os apps que mantêm arquivos nele, e o “Encerrar e Ejetar” dele encerra esses apps e ejeta o disco depois que você confirma.

Como descobrir o que está usando um disco com o Terminal

  1. 01 Abra o Terminal, em Aplicativos → Utilitários.
  2. 02 Digite sudo lsof e um espaço, depois arraste o disco do Finder para a janela para preencher o caminho dele, e pressione Return.
  3. 03 Digite a sua senha. Cada linha é um arquivo aberto: a primeira coluna é o processo, a segunda o PID dele, e a última o arquivo.
  4. 04 Encerre cada app da lista. Para um processo sem janela, rode kill <PID> com o PID dele.
  5. 05 Ejete o disco de novo no Finder, ou rode diskutil eject com o mesmo caminho.

Se a lista estiver vazia e o disco ainda não ejetar, espere um minuto e tente de novo: o macOS pode estar terminando uma gravação. mdutil -s com o caminho do disco diz se a indexação do Spotlight está ativada para ele.

O macOS se recusa a ejetar um disco em uso porque desmontá-lo debaixo de um programa pode perder o que o programa estava gravando. A mensagem do Finder às vezes diz qual é o app, e muitas vezes não. A tabela abaixo liga os culpados de sempre ao que faz cada um soltar o disco.

O que impede um disco de ser ejetado

O que o prendeComo saberComo fazer soltar
Um app com um documento aberto O app está na lista do lsof, ou o Finder diz o nome dele Feche o documento, ou encerre o app
Uma janela do Terminal Um shell como o zsh na lista, com cwd na coluna FD Rode cd ~ nessa janela, ou feche-a
Spotlight mds ou mds_stores na lista Espere, ou adicione o disco em Ajustes do Sistema → Spotlight → Privacidade na Busca
Time Machine backupd na lista, ou um backup em andamento na barra de menus Deixe o backup terminar, ou escolha Ignorar Este Backup
Visualização Rápida ou Pré-Visualização QuickLookUIService ou Preview na lista Feche a visualização, ou encerre a Pré-Visualização
Uma biblioteca do Fotos ou do Música no disco Photos, photolibraryd ou Music na lista Encerre o app e dê alguns segundos aos auxiliares dele
Um app que roda a partir do disco O caminho do próprio app está no disco Encerre o app

O que a mensagem de ejeção quer dizer

O Finder mostra uma de duas mensagens. “O disco não foi ejetado porque um ou mais programas podem estar usando-o” quer dizer que algum processo tem algo aberto no disco, e o macOS não está dizendo qual. Quando ele sabe qual é o app, a mensagem mostra o nome dele. Nos dois casos, Tentar Novamente é seguro, e Forçar Ejeção desmonta o disco seja o que for que estiver aberto.

Forçar Ejeção é seguro?

Forçar Ejeção desmonta o disco debaixo dos programas que o estão usando. Arquivos que só estavam sendo lidos não sofrem nada. Um arquivo sendo gravado pode ficar incompleto, e uma biblioteca do Fotos, do Música ou do Final Cut que estava aberta pode precisar de reparo na próxima vez que você a abrir. Use depois de encontrar o que prende o disco e ver que ele não encerra, não antes.

Ejetar com o Utilitário de Disco ou o diskutil

Desmontar e Ejetar do Utilitário de Disco seguem a mesma regra do Finder, e falham do mesmo jeito enquanto algo prende o disco. No Terminal, diskutil eject /Volumes/NAME ejeta um disco e diskutil unmountDisk force /Volumes/NAME força a ejeção, com o mesmo risco de Forçar Ejeção.

Quando nada parece estar usando o disco

Encerre a sessão e entre de novo, o que encerra todos os seus apps e auxiliares, e depois ejete. Se funcionar, era um auxiliar em segundo plano que prendia o disco. Se não, desligue o Mac e desconecte o disco depois que ele estiver desligado: desligar desmonta todos os discos com segurança.

Como evitar que isso aconteça

A maioria dos discos que não ejetam vem dos mesmos poucos hábitos.

  • Encerre os apps que abriram arquivos no disco antes de ejetá-lo
  • Mantenha as janelas do Terminal fora das pastas do disco, ou feche-as antes
  • Adicione o disco à Privacidade na Busca do Spotlight se você nunca busca nele
  • Deixe um backup do Time Machine terminar antes de desconectar o disco dele

O que o Vitals acrescenta

O Vitals mostra o que está prendendo um disco, e o ejeta para você.

  • Arquivos Abertos, na aba Desenvolvedor: cada disco com quantos arquivos estão abertos nele, e Em uso ou Pronto para ejetar
  • Abaixo de um disco, cada app e programa que o prende, com a pasta em que trabalha e os arquivos que tem abertos
  • “Encerrar e Ejetar”: o Vitals mostra os apps, pergunta, encerra-os como o ⌘Q faz e depois ejeta o disco
  • Spotlight e Time Machine aparecem pelo que estão fazendo, e o Vitals tenta de novo enquanto eles soltam o disco

Bom saber

  • O Vitals não força a ejeção. Se um app não encerrar, ele diz qual e deixa o disco montado.
  • Sem as Métricas Completas do Sistema, os arquivos dos processos do próprio macOS ficam de fora, e o Vitals diz quantos.
  • Arquivos Abertos fica na janela, não no menu suspenso da barra de menus.
Comprar o Vitals por $29 $29 para sempre durante o lançamento, $49 depois, pagamento único, com reembolso em até 14 dias. Ou $15 por um ano de atualizações.

Perguntas frequentes

Por que o Mac diz que o disco não foi ejetado porque um ou mais programas podem estar usando-o?

Um processo ainda tem um arquivo ou uma pasta aberta no disco. Pode ser um app, uma janela do Terminal, o Spotlight ou o Time Machine. Rode sudo lsof /Volumes/NAME para ver qual.

Como descubro qual programa está usando meu disco externo no Mac?

Rode sudo lsof /Volumes/NAME no Terminal. Cada linha é um processo e um arquivo que ele tem aberto no disco. O Vitals mostra o mesmo por app, em Arquivos Abertos.

É seguro forçar a ejeção de um disco no Mac?

Só se nada estiver gravando nele. Forçar Ejeção pode deixar um arquivo incompleto ou uma biblioteca precisando de reparo. Encontre o que prende o disco e encerre-o antes.

Posso só desconectar o disco?

Não enquanto ele estiver montado. O macOS ainda pode estar gravando, e o disco pode precisar de reparo depois. Ejete-o, ou desligue o Mac antes.

Por que o Spotlight está usando meu disco externo?

O Spotlight indexa um disco para que ele possa ser pesquisado. Ele termina sozinho. Para impedir isso de vez, adicione o disco em Ajustes do Sistema → Spotlight → Privacidade na Busca.

Existe um app que mostra o que está impedindo um disco de ser ejetado?

O Vitals mostra. A seção Arquivos Abertos dele lista cada disco com os apps que mantêm arquivos nele, e “Encerrar e Ejetar” encerra esses apps e ejeta o disco depois de uma confirmação.

No glossário

Mais guias