umount - o dispositivo está ocupado

10

Às vezes, quando quero desmontar um dispositivo, por exemplo,

sudo umount /dev/loop0

Eu receberei a mensagem

umount: /mnt: device is busy.
        (In some cases useful info about processes that use
         the device is found by lsof(8) or fuser(1))

Eu geralmente resolvo esse problema fechando uma janela de console (no meu caso, xfce4-terminal) e, em seguida, umount .

O que esse problema significa? Existe alguma solução mais inteligente?

    
por xralf 01.09.2011 / 16:20

5 respostas

12

Isso significa que algum processo tem um diretório de trabalho ou um identificador de arquivo aberto sob o ponto de montagem. A melhor coisa a fazer é terminar o processo ofensivo, alterar seu diretório de trabalho ou fechar o identificador de arquivo antes de desmontar.

Existe uma alternativa no Linux. Usando umount -l chama uma desmontagem "lenta". O sistema de arquivos ainda será montado, mas você não poderá visualizá-lo ou usá-lo, exceto os processos que já o utilizam. Quando o programa problemático sai (através de qualquer meio), o sistema irá "terminar" a desmontagem do sistema de arquivos.

    
por 01.09.2011 / 19:29
3

Dada sua "solução usual", significa que o shell que você está executando na sua janela de console tem um diretório em um sistema de arquivos no dispositivo como seu diretório de trabalho atual.

Linux, e Unixes em geral, querem muito manter um sistema de arquivos montado se um processo tiver um diretório de trabalho atual naquele sistema de arquivos.

Você poderia usar apenas cd na janela do console para sair de um diretório em ou abaixo de /mnt em vez de matar a janela do console e o shell sendo executado dentro dela.

    
por 01.09.2011 / 22:09
2

Você também pode usar fuser para eliminar todos os processos usando o sistema de arquivos montado.

fuser -cuk /mnt

Opções:

-c     
    Same as -m option, used for POSIX compatibility.

-u, --user
    Append the user name of the process owner to each PID.

-k, --kill
    Kill  processes accessing the file. Unless changed with -SIGNAL, SIGKILL is sent. An fuser process
    never kills itself, but may kill other fuser processes. The  effective  user  ID  of  the  process
    executing fuser is set to its real user ID before attempting to kill.kill.

-m NAME, --mount NAME
    NAME specifies a file on a mounted file system or a block device that is  mounted.  All  processes
    accessing  files  on  that  file  system  are  listed.   If  a  directory file is specified, it is
    automatically changed to NAME/. to use any file system that might be mounted on that directory.

Verifique se você está em explicahell .

    
por 23.11.2017 / 08:29
0

Encontrei o mesmo problema hoje e consegui resolvê-lo.    Meu problema é resultado da montagem de um diretório para o meu diretório de trabalho atual, então quando eu corro "umount", aconteceu.    o caminho para a solução é mudar o diretório atual e então executar "umount ..".    espero que funcione.

    
por 29.08.2015 / 09:21
0

Descobri uma situação que pode interferir na desmontagem de um dispositivo que compartilharei como resposta, mesmo que essa questão seja muito antiga.

Se você tiver compartilhamentos NFS hospedados na máquina e qualquer um desses compartilhamentos NFS tiver backup do dispositivo que você está tentando desmontar, será necessário parar de compartilhá-los (o melhor é parar o serviço NFS, por exemplo, sudo service nfs-kernel-server stop em versões recentes do Ubuntu). O servidor NFS pode não aparecer em lsof ou fusor, o que pode dificultar a identificação do problema.

    
por 29.10.2015 / 23:12

Tags