Skip to content
Sistema

Que processo bloqueia uma desmontagem? Encontrá-lo com fuser

Avatar illustré de Julien Macé 3 min read
NAS Linux relié à un disque externe dont le câble est retenu pour illustrer un volume occupé
Identifier le processus avant de démonter un volume Linux occupé.
NAS Linux conectado a um disco externo cuja cabos estão retidos para ilustrar um volume ocupado
Identificar o processo antes de desmontar um volume Linux ocupado.

Um umount que responde “target is busy” acontece frequentemente após uma ação simples: um serviço precisa ser parado, um disco USB deve ser removido ou um volume de backup deve ser desmontado. O kernel recusa porque um processo ainda está utilizando esse sistema de arquivos.

fuser permite identificar esse processo antes de matar qualquer coisa. Em um ponto de montagem válido, o comando lista os PID que utilizam seu sistema de arquivos.

Confirmar o ponto de montagem antes de usar fuser

Trabalhe a partir de um diretório diferente do volume a ser desmontado. Um shell colocado em /mnt/archives é suficiente para manter esse ponto de montagem ocupado.

Comece pedindo ao findmnt qual sistema de arquivos realmente abriga o caminho. Essa etapa evita executar fuser em um simples diretório localizado na raiz /.

cd /
findmnt -T /mnt/archives -o TARGET,SOURCE,FSTYPE,OPTIONS

A coluna TARGET deve designar o ponto a ser desmontado, por exemplo /mnt/archives. Se a saída retornar /, o caminho não é um volume distinto. Não prossiga com um comando destinado a desmontar um disco.

Antes de uma operação em um servidor, verifique também o papel do volume. Um backup ativo, um banco de dados ou um contêiner podem estar escrevendo nele mesmo que nenhum terminal esteja aberto.

  • Mantenha uma sessão SSH ou console que não dependa do volume.
  • Anote o serviço esperado, o ponto de montagem e a janela de intervenção.
  • Verifique com findmnt se a pasta corresponde ao ponto de montagem esperado.

O guia findmnt no Linux ajuda a rever a fonte e o tipo do sistema de arquivos antes de uma intervenção no disco.

Ler os processos que mantêm o volume aberto

Use o ponto de montagem exato com -m. A opção -M adiciona uma proteção: fuser recusa o comando se o argumento não for um ponto de montagem real.

sudo fuser -vmM /mnt/archives

A saída pode conter o nome de usuário, um PID, o tipo de acesso e o comando. Um processo exibido com acesso ao diretório atual indica frequentemente um terminal permanecendo no volume. Um processo de serviço deve estar relacionado à sua unidade systemd ou ao seu aplicativo antes de qualquer ação.

O resultado não diz automaticamente qual processo é legítimo. Um agente de backup pode estar ativo enquanto um script esquecido roda a partir do mesmo volume. A decisão depende do serviço esperado naquele momento.

Para examinar um PID específico, complete com ps e veja sua unidade systemd quando o processo depender de um serviço:

ps -fp 2481
sudo systemctl status backup.service

Substitua 2481 e backup.service pelos valores observados. Para arquivos, sockets e portas associados a um processo, o artigo sobre lsof complementa bem esse diagnóstico.

Parar o serviço correto antes de um umount

Quando você identificou uma unidade systemd, pare-a corretamente. Esse método dá ao serviço tempo para fechar seus arquivos e escrever seu estado final.

sudo systemctl stop backup.service
sudo fuser -vmM /mnt/archives
sudo umount /mnt/archives

O segundo comando fuser não deve mais exibir o processo do serviço parado. Se outro PID permanecer presente, analise-o por sua vez em vez de reiniciar umount em um loop.

fuser -k existe, mas não é uma resposta automática a um volume ocupado. Essa opção envia um sinal aos processos encontrados e pode interromper um backup, um processamento de negócios ou um shell de outro administrador. Eu escolheria a parada ordenada do aplicativo enquanto a unidade ou o script for identificável. Uma máquina bloqueada durante uma parada controlada é o caso em que uma ação mais direta pode ser discutida, com um console e um procedimento de incidente.

Verificar se o volume realmente desapareceu

Um umount silencioso indica apenas que o comando não retornou erro. Revise o caminho com findmnt e verifique as últimas mensagens do kernel se o dispositivo for removível.

findmnt -T /mnt/archives
journalctl -k -n 20 --no-pager

Após um desmontagem bem-sucedida, findmnt -T /mnt/archives pode ainda mostrar o sistema de arquivos raiz para o diretório vazio, mas não deve mais exibir a antiga fonte de volume nesse ponto de montagem. Para um disco USB, aguarde também que as gravações sejam concluídas antes de desconectá-lo.

Referência de comportamento: manual do fuser de psmisc.

Share Facebook X WhatsApp LinkedIn Pinterest Reddit Email