diskutil eject: como ejetar unidades pelo Terminal do Mac
Utilize diskutil eject /Volumes/Nome para ejetar unidades pelo Terminal do Mac. Guia completo: listar unidades, forçar desmontagem, encerrar processos de bloqueio com lsof.
O Finder diz que a unidade está em utilização. Não diz o que a está a utilizar ou o que fazer em relação a isso. O Terminal faz as duas coisas.
Resposta rápida: Execute
diskutil eject /Volumes/NomeDoSeuDiscopara ejetar um disco a partir do Terminal. Se falhar, utilizesudo lsof /Volumes/NomeDoSeuDiscopara ver o que está a bloquear a ejeção,kill <PID>para terminar o processo responsável e ejete novamente. Em último recurso,diskutil unmountDisk force /dev/diskNforça a saída do disco, mas faça-o apenas quando nada estiver a gravar.
Se se sente à vontade com a linha de comandos, o Terminal é a forma mais poderosa de lidar com ejeções de unidades persistentes no macOS. E se ainda não se sente à vontade, estes comandos são um bom sítio por onde começar.
Ejeção básica com diskutil eject
A forma mais direta de ejetar uma unidade externa pelo Terminal do Mac:
diskutil eject /Volumes/NomeDaSuaUnidade
Substitua NomeDaSuaUnidade pelo nome real da sua unidade, exatamente como aparece no Finder. Se o nome tiver espaços, coloque-o entre aspas:
diskutil eject "/Volumes/A Minha Unidade"
Isto faz o mesmo que clicar no botão de ejetar no Finder. Se funcionar, a unidade é desmontada de forma limpa e já está. Se falhar, recebe uma mensagem de erro mais informativa do que o Finder alguma vez fornece.
Também pode desmontar sem ejetar (a unidade permanece visível no Utilitário de Disco, mas não está montada):
diskutil unmount /Volumes/NomeDaSuaUnidade
A diferença é importante para unidades com várias partições. unmount remove um volume. eject remove o dispositivo físico e todos os seus volumes de uma só vez.
Encontrar o identificador da sua unidade com diskutil list
Antes de utilizar comandos mais avançados, precisa do identificador da sua unidade. Liste todas as unidades ligadas:
diskutil list
A lista mostra cada unidade e as suas partições. A sua unidade externa será algo como disk4 ou disk5. As unidades internas são normalmente disk0 e disk1.
Para uma visão geral mais legível apenas de unidades externas:
diskutil list external
Depois de saber o identificador da unidade, também pode ejetar utilizando o caminho /dev/ em vez do nome do volume:
diskutil eject /dev/disk4
Isto é útil quando o nome do volume contém caracteres invulgares ou quando o volume não está montado mas a unidade ainda está ligada.
Como ejetar todas as unidades externas de uma só vez
Se precisar de ejetar todas as unidades externas com um único comando, existem duas abordagens.
Utilizando o diskutil para encontrar e ejetar todas as unidades externas:
diskutil list external | grep -o 'disk[0-9]*$' | while read disk; do diskutil eject "/dev/$disk"; done
Ou utilizando AppleScript pelo Terminal, que espelha o que o Finder faz:
osascript -e 'tell application "Finder" to eject (every disk whose ejectable is true)'
A abordagem do AppleScript apenas ejeta unidades que o Finder considera ejetáveis. Ignora o seu disco de arranque e volumes de rede, que é normalmente o que deseja.
Forçar a desmontagem quando o diskutil eject falha
Se uma ejeção normal falhar com um erro como “couldn’t unmount disk”, force a desmontagem:
diskutil unmount force /Volumes/NomeDaSuaUnidade
Ou desmonte todos os volumes numa unidade específica de uma só vez:
diskutil unmountDisk force /dev/disk4
A desmontagem forçada diz ao macOS para libertar o volume independentemente do que o está a utilizar. É mais controlado do que desligar fisicamente a unidade (o sistema ainda limpa as caches e notifica os processos), mas não espera que os processos fechem os ficheiros de forma limpa.
Utilize a desmontagem forçada quando souber que nada de importante está a ser escrito. É o equivalente na linha de comandos a forçar a ejeção pelo Utilitário de Disco. Consulte o nosso guia sobre quando a ejeção forçada é segura vs. arriscada antes de utilizar isto numa unidade que estava a ser utilizada ativamente.
Descobrir o que está a bloquear a ejeção com lsof
Este é o comando que torna o Terminal inestimável para problemas de ejeção:
lsof /Volumes/NomeDaSuaUnidade
lsof significa “list open files” (listar ficheiros abertos). Mostra todos os processos que têm um ficheiro aberto naquele volume: o nome do processo, o ID do processo (PID), o utilizador que o está a executar e qual o ficheiro que está aberto.
Para resultados completos (incluindo processos do sistema), execute-o com sudo:
sudo lsof /Volumes/NomeDaSuaUnidade
Sem sudo, apenas vê os processos que pertencem à sua conta de utilizador. Processos do sistema como o mds do Spotlight ou o backupd do Time Machine não aparecerão. Com sudo, vê tudo o que está realmente a manter a unidade aberta.
Ler a saída do lsof
A saída assemelha-se a isto:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
mds 123 root 12r REG 1,8 4096 789 /Volumes/AMinhaUnidade/.Spotlight-V100/...
Finder 456 aaron 15r DIR 1,8 1024 2 /Volumes/AMinhaUnidade
Dropbox 789 aaron 8u REG 1,8 8192 345 /Volumes/AMinhaUnidade/Projetos/.dropbox
As colunas que mais importam:
- COMMAND: O nome do processo. Isto diz-lhe o que está a bloquear a ejeção.
- PID: O ID do processo. Utilizará isto para encerrar o processo se necessário.
- FD: FD descreve como o ficheiro foi aberto: r para leitura, w para escrita, u para ambas. Não indica a atividade atual nem prova que o volume não tem escritas pendentes.
- NAME: O ficheiro específico a ser acedido. Isto revela muitas vezes exatamente por que razão o processo ali está.
Culpados comuns: mds (indexação do Spotlight), backupd (Time Machine), Dropbox, Google Drive, o próprio Finder. Veja os nossos artigos detalhados sobre o Spotlight a bloquear a ejeção e o iCloud/Dropbox a impedir a ejeção para correções específicas.
Encerrar processos de bloqueio
Feche as apps compatíveis pela barra de menus. Os processos do sistema têm tratamento separado e podem exigir espera ou desligar o Mac. Guarde o trabalho, termine cópias e backups e feche as apps normalmente antes de tentar ejetar novamente. Forçar a saída ou a ejeção pode causar perda de dados; Ejecta não certifica a segurança das escritas.
kill 789
Isto envia um sinal de terminação graciosa. O processo tem a oportunidade de fechar ficheiros e limpar tudo. Dê-lhe alguns segundos para sair e tente ejetar novamente.
Se não responder a um encerramento gracioso:
kill -9 789
Forçar a saída é o último recurso. Pode perder trabalho por guardar ou interromper escritas. Guarde primeiro e espere que as transferências terminem. Os nomes dos processos do Spotlight não provam acesso apenas de leitura. Não force a saída de mds ou mds_stores para libertar um disco. Espere, feche as apps e tente uma ejeção normal. Ejecta identifica estes processos, mas não oferece a saída habitual de processos do sistema. Se o disco continuar bloqueado, guarde tudo e desligue completamente o Mac antes de o desligar do computador.
Guarde o trabalho, termine cópias e backups e feche as apps normalmente antes de tentar ejetar novamente.
Fluxo de trabalho completo de resolução de problemas
Guarde o trabalho, termine cópias e backups e feche as apps normalmente antes de tentar ejetar novamente.
diskutil eject "/Volumes/YourDriveName"
sudo lsof "/Volumes/YourDriveName"
Os nomes dos processos do Spotlight não provam acesso apenas de leitura. Não force a saída de mds ou mds_stores para libertar um disco. Espere, feche as apps e tente uma ejeção normal. Ejecta identifica estes processos, mas não oferece a saída habitual de processos do sistema. Se o disco continuar bloqueado, guarde tudo e desligue completamente o Mac antes de o desligar do computador.
O nome de um processo ou a lista de ficheiros abertos não prova que não há escritas em curso. Guarde o trabalho, termine cópias e backups e feche as apps normalmente antes de tentar ejetar novamente. Forçar a saída ou a ejeção pode causar perda de dados; Ejecta não certifica a segurança das escritas.
Variações de diagnóstico úteis
Verifique se o Spotlight especificamente está a prender a sua unidade:
lsof /Volumes/NomeDaSuaUnidade | grep mds
Liste apenas os nomes únicos dos processos que bloqueiam a ejeção (sem linhas duplicadas):
lsof /Volumes/NomeDaSuaUnidade | awk '{print $1}' | sort -u
Observe o E/S de disco em tempo real para ver se algo está a escrever ativamente:
sudo fs_usage -f diskio | grep NomeDaSuaUnidade
Isto corre continuamente e mostra cada operação de disco à medida que acontece. Pressione Control-C para parar. Utilize isto quando o lsof mostra um processo mas não tem a certeza se este está a escrever ativamente ou apenas a manter um handle antigo.
Quando o Terminal dá mais trabalho do que vale a pena
Estes comandos são poderosos e, depois de os utilizar algumas vezes, tornam-se naturais. Mas existe um custo real em trocar o contexto do seu trabalho por uma janela do Terminal: executar comandos de diagnóstico, analisar saídas técnicas, decidir qual PID é seguro encerrar.
Ejecta: Ejecta oferece diagnóstico gratuito de discos sem período de teste limitado. A licença paga desbloqueia saída e ejeção para apps compatíveis, Ejetar tudo e controlos do Time Machine. Processos do sistema podem exigir espera, autorização ou desligar o Mac. Guarde o trabalho e termine primeiro as transferências.
Sem limite de computadores ou ativações. Pedidos de reembolso no prazo de 30 dias.
Ejecta oferece diagnóstico gratuito de discos sem período de teste limitado. A licença paga desbloqueia saída e ejeção para apps compatíveis, Ejetar tudo e controlos do Time Machine. Processos do sistema podem exigir espera, autorização ou desligar o Mac. Guarde o trabalho e termine primeiro as transferências.
Comprar Agora -Artigos relacionados
Como ejetar uma pen USB do Mac em segurança
Todas as formas de ejetar uma pen USB no Mac e o que fazer quando o macOS diz que o disco está em utilização e …
Como encontrar, abrir e usar um disco externo no Mac
Ligue um disco externo ao Mac, encontre-o no Finder, abra os seus ficheiros e desligue-o em segurança. Um guia …
Porque é que o seu Mac fica mais lento quando uma unidade externa está ligada
Ligar uma unidade externa não devia abrandar todo o seu sistema, mas muitas vezes acontece. Veja o que se …
Compreender as permissões de disco do macOS e unidades externas
Problemas de permissão podem impedi-lo de aceder, modificar ou ejetar unidades externas no Mac. Veja como …