Arquivos abertos
Processos com arquivos abertos são os culpados usuais. Exibi-los:
lsof +f -- <mountpoint or device>
Há uma vantagem em usar /dev/<device> em vez de /mountpoint : um ponto de montagem desaparecerá após um umount -l ou pode estar oculto por uma montagem sobreposta.
fuser também pode ser usado, mas em minha opinião lsof tem uma saída mais útil. No entanto, fuser é útil quando se trata de matar os processos que causam seus dramas, para que você possa continuar com sua vida.
Listar arquivos em <mountpoint> (veja a advertência acima):
fuser -vmM <mountpoint>
Mata interativamente apenas os processos com arquivos abertos para gravação:
fuser -vmMkiw <mountpoint>
Após remontar somente leitura ( mount -o remount,ro <mountpoint> ), é seguro (r) matar todos os processos restantes:
fuser -vmMk <mountpoint>
Mountpoints
O culpado pode ser o próprio kernel. Outro sistema de arquivos montado no sistema de arquivos que você está tentando umount causará sofrimento. Verifique com:
mount | grep <mountpoint>/
Para montagens de loopback, verifique também a saída de:
losetup -la
Inodes anônimos (Linux)
Inodes anônimos podem ser criados por:
- Arquivos temporários (
open com O_TMPFILE )
-
inotify relógios
- [eventfd]
- [eventpoll]
- [timerfd]
Este é o tipo de pokemon mais evasivo e aparece na coluna lsof do TYPE como a_inode (que não está documentado no lsof man page ).
Eles não aparecerão em lsof +f -- /dev/<device> , então você precisará:
lsof | grep a_inode
Para matar processos que contêm inodes anônimos, consulte: Listar os atuais relógios inotify (nome do caminho, PID) .