Eu tenho um problema com um ponto de montagem sendo muito ocupado para desmontar. Normalmente, lsof ou fuser me diria qual processo está usando, mas isso é uma montagem de ligação, portanto lsof e fuser mostram o que está usando tanto o ponto de montagem original quanto o ponto de montagem de ligação.
Ex:
Monte os sistemas de arquivos:
$ sudo mkdir /mnt/mount /mnt/bind
$ sudo mount /dev/sdb1 /mnt/mount
$ sudo mount -o bind /mnt/mount /mnt/bind
Iniciar um processo que mantenha / mnt / mount ocupado demais para desmontar
$ sudo dd if=/dev/zero of=/mnt/mount/testfile bs=1 oflag=dsync
Verifique o que o fusor diz
$ sudo fuser -m /mnt/mount
/mnt/mount: 4022
$ sudo fuser -m /mnt/bind
/mnt/bind: 4022
Verifique o que o lsof diz
$ sudo lsof +D /mnt/mount
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
dd 4022 root 1w REG 8,17 28545 12 /mnt/mount/testfile
$ sudo lsof +D /mnt/bind
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
dd 4022 root 1w REG 8,17 40682 12 /mnt/bind/testfile
Tente desmontar os dois
$ sudo umount -v *
umount: /mnt/bind (/mnt/mount) unmounted
umount: /mnt/mount: target is busy
Se você seguir as mesmas etapas, mas informar ao dd para gravar o arquivo em / mnt / bind / testfile, a desmontagem / mnt / mount será bem-sucedida, mas a desmontagem / mnt / bind falhará.
É evidente que faz diferença qual ponto de montagem o processo (dd neste caso) está usando, mas lsof e fuser não se diferenciam. Existe algo que faz?