La forma de verificar es fuser -vm /mnt/dir
, que debe ejecutarse como root. Le dirá qué procesos están accediendo al punto de montaje.
Una alternativa es lsof /mnt/dir
, que mostrará cada archivo abierto en el montaje. Nuevamente, es mejor ejecutarlo como root.
Puede ejecutar cualquiera de estos como no root, pero luego la salida se limitará a sus procesos; los de otros usuarios simplemente no se mostrarán en silencio, a pesar de que evitarán desmontar el sistema de archivos.
Ejemplo:
Watt:~# fuser -vm /mnt/Zia/src
USER PID ACCESS COMMAND
/mnt/Zia/src: root kernel mount /mnt/Zia/src
anthony 24909 ..c.. bash
anthony 25041 F.c.. gvim
El campo "acceso" le dice cómo se está accediendo. En este caso, el núcleo lo tiene en uso como montaje (duh, pero desmontar estará bien solo con esto). bash
lo tiene como el directorio de trabajo actual (tendrá que hacerlo cd
en un directorio diferente antes de desmontar) y gvim tiene el directorio actual y tiene un archivo abierto (deberá cerrar ese gvim).
Watt:~# lsof /mnt/Zia/src
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
bash 24909 anthony cwd DIR 0,26 12288 3527682 /mnt/Zia/src/perl (zia.vpn.home:/home/anthony/src)
gvim 25041 anthony cwd DIR 0,26 12288 3527682 /mnt/Zia/src/perl (zia.vpn.home:/home/anthony/src)
gvim 25041 anthony 6u REG 0,26 16384 3526219 /mnt/Zia/src/perl/.utf8.c.swp (zia.vpn.home:/home/anthony/src)
En esta salida, puede ver los directorios actuales para bash y gvim (como tipo DIR
). También puede ver qué archivo tiene abierto gvim para escribir.
Cómo forzar el problema:
fuser
tiene una -k
opción que enviará una señal (por defecto:) SIGKILL
a cada proceso usando el montaje. Esta es una forma bastante contundente de evitar que la montura esté ocupada. (¡Y por supuesto, ten cuidado con lo que tú SIGKILL
!)
umount
tiene una -l
opción para realizar un desmontaje diferido. El montaje se eliminará del espacio de nombres del sistema de archivos (por lo que ya no lo verá debajo /mnt/Zia/src
, en el ejemplo), pero permanece montado, por lo que los programas que acceden a él pueden continuar haciéndolo. Cuando el último programa que accede a él salga, el desmontaje realmente ocurrirá.
Hay una causa final reparable de falla de desmontaje, y es que un servidor NFS se está cayendo. Aquí puede usar umount -f
, pero corre el riesgo de perder datos si lo hace. (Es posible que el cliente haya guardado en caché las escrituras que el servidor aún no ha confirmado, y esas escrituras se descartarán. Sin embargo, a las aplicaciones ya se les ha dicho que la escritura es exitosa).