\"O problema de ejeção no Mac que a Apple ignora há anos\"

\"Os utilizadores de Mac queixam-se de mensagens de erro de ejeção vagas desde os dias do PowerPC. A Apple nunca corrigiu isto. Aqui está a história deste problema frustrante.\"

Tente ejetar uma unidade externa no seu Mac e, às vezes, recebe esta mensagem: "O disco não foi ejetado porque um ou mais programas podem estar em utilização."

Um ou mais programas. Podem estar em utilização. Não "está em utilização". Nem quais programas. Apenas uma acusação vaga de que algo, algures, pode ter um ficheiro aberto.

Esta mensagem de erro existe essencialmente da mesma forma há mais de quinze anos. Os utilizadores de Mac pedem uma correção nos fóruns de suporte da Apple desde pelo menos a era do Snow Leopard. As queixas continuam em todas as versões do macOS: Mountain Lion, Mavericks, Catalina, Monterey, Ventura, Sonoma, Sequoia. A mensagem nunca muda. A Apple nunca a corrige.

O problema é óbvio

Quando não consegue ejetar uma unidade, precisa de duas informações: qual o processo que a está a bloquear e como parar esse processo. O macOS não oferece nenhuma das duas.

O sistema operativo sabe exatamente qual o processo que tem ficheiros abertos na unidade. Tem de saber, porque é assim que determina se permite a ejeção. Mas, em vez de partilhar esta informação, o macOS dá-lhe um emoji de encolher de ombros em forma de texto.

Compare isto com o comando de Terminal lsof, que lista todos os processos com ficheiros abertos num determinado caminho. A informação existe. É acessível. A Apple simplesmente escolheu não a colocar na caixa de diálogo de erro.

O que os utilizadores fazem realmente

Perante esta mensagem de erro inútil, os utilizadores de Mac desenvolveram um folclore de soluções alternativas passadas através de publicações em fóruns e comentários em blogues.

Os otimistas esperam e tentam novamente, esperando que qualquer processo misterioso termine por si próprio. Às vezes isto funciona. Muitas vezes não.

Os tecnicamente inclinados abrem o Terminal e executam lsof /Volumes/NomeDaUnidade, depois analisam o resultado para identificar os culpados. Isto exige saber que o comando existe, compreender como ler o seu resultado e sentir-se à vontade para encerrar processos.

Os impacientes forçam a ejeção e esperam pelo melhor. Às vezes isto não tem problema. Às vezes corrompe dados. Sem saber o que está realmente a utilizar a unidade, não há forma de avaliar o risco.

Os frustrados simplesmente reiniciam o Mac. Isto funciona definitivamente, mas é absurdo que desligar uma unidade exija reiniciar o computador.

Porque é que a Apple não corrigiu isto?

Apenas a Apple sabe ao certo, mas algumas teorias:

A caixa de diálogo de erro precisaria de mudar e a Apple historicamente evita adicionar complexidade às mensagens voltadas para o utilizador. Mas "O Safari está a utilizar esta unidade" não é mais complexo do que "um ou mais programas podem estar em utilização". É apenas mais útil.

A lista de processos de bloqueio poderia ser longa ou confusa em casos extremos. Verdade, mas mostrar o principal culpado seria infinitamente melhor do que não mostrar nada. E para os casos extremos, um botão "Mostrar Detalhes" é uma prática padrão.

A maioria dos utilizadores não encontra este problema com frequência suficiente para se queixar alto. Talvez, mas as Comunidades de Suporte da Apple e os fóruns do MacRumors estão cheios de tópicos que remontam a anos. O problema está bem documentado.

A resposta real provavelmente é a priorização. A Apple possui recursos de engenharia limitados e este problema, embora irritante, não impede as pessoas de utilizarem os seus Macs. Apenas as faz murmurar pragas contra o ecrã a cada poucas semanas.

O problema está a piorar

À medida que o armazenamento externo se torna mais comum (SSDs USB-C rápidos, unidades portáteis para edição de vídeo, unidades de cópia de segurança para Time Machine), os utilizadores encontram este erro com mais frequência.

O macOS também está a executar mais processos em segundo plano que acedem a unidades externas. Indexação do Spotlight, monitorização do Time Machine, sincronização do iCloud, vários processos daemon. O número de bloqueadores potenciais cresceu, mas a mensagem de erro permanece igualmente vaga.

Utilizadores que migraram de Macs mais antigos relatam que o problema aparece com mais frequência em máquinas com Apple Silicon. Se isto é uma alteração de software ou apenas percepção não é claro, mas as queixas intensificaram-se desde a transição para o M1.

Existem soluções de terceiros

O facto de programadores terceiros terem construído aplicações inteiras em torno deste problema diz algo.

O What’s Keeping Me era um utilitário popular que mostrava quais os processos que estavam a bloquear uma unidade. Foi abandonado há anos e já não funciona no macOS moderno, mas a sua existência provou que havia procura por esta funcionalidade.

Vários utilitários de barra de menus e scripts surgiram para preencher a lacuna. Alguns monitorizam unidades e avisam antes que ocorram problemas de ejeção. Outros automatizam o fluxo de trabalho do lsof para que não tenha de digitar comandos no Terminal.

Estas ferramentas não deviam precisar de existir. A funcionalidade que oferecem é uma capacidade básica do sistema operativo que a Apple escolheu não expor.

Como seria uma correção

A correção mínima viável é simples: alterar a caixa de diálogo de erro para dizer qual o processo que está a bloquear a ejeção. "A unidade não pode ser ejetada porque o Spotlight a está a indexar" diz-lhe exatamente o que se está a passar. Pode esperar que a indexação termine, ou pode encerrar o Spotlight, ou pode decidir forçar a ejeção conhecendo o risco.

Uma correção melhor adicionaria uma opção para encerrar o processo de bloqueio diretamente da caixa de diálogo. "O Safari tem ficheiros abertos nesta unidade. [Encerrar Safari e Ejetar] [Cancelar]" resolve o problema com um clique, sem exigir que os utilizadores procurem no Monitor de Atividade.

A correção ideal seria proativa: avisar os utilizadores quando têm alterações não guardadas numa unidade externa, ou quando processos em segundo plano a estão a utilizar ativamente. Avisar as pessoas antes que tentem ejetar e fiquem frustradas.

Nenhuma delas é tecnicamente difícil. A parte mais difícil é provavelmente a decisão de produto de fazer a alteração.

Por enquanto

A Apple pode corrigir isto eventualmente. São conhecidos por abordar aborrecimentos de longa data quando os astros se alinham. Até lá, as soluções alternativas permanecem as mesmas: comandos de Terminal, trabalho de detetive no Monitor de Atividade ou ferramentas como o Ejecta que fazem o trabalho de detetive por si.

Não devia ser tão difícil desligar uma unidade. Mas é, e tem sido assim há anos, e a Apple parece não se importar.

Se prefere não utilizar o Terminal todas as vezes, o Ejecta mostra-lhe exatamente qual o processo que está a bloquear o seu disco — e permite-lhe encerrá-lo com um clique, direto da sua barra de menus.

Comprar Agora — $9.99