Descubre el comando fuser

El comando fuser permite identificar los procesos que están haciendo uso del archivo, directorio, partición de disco o puerto que le especifique. Si usted es un usuario de escritorio puede pensar que no necesita aprender a usar esta herramienta. Sin embargo, si usted piensa así, le demostraré lo contrario.

En alguna ocasión habrá tenido problemas para desmontar un dispositivo de almacenamiento usb, incluso desde la terminal al intentar ejecutar, como root, umount. En raras ocasiones umount da error indicando umount: device is busy, cuando en realidad usted no estaba operando con el dispositivo.

Este error se debe a que algún proceso, que ha hecho uso del dipositivo en cuestión, no ha terminado como debía y mount entiende que alguien aun esta accediendo al disco e impide que sea desmontado. Para poder desmontar el dispositivo tan solo debemos finalizar el proceso que está bloqueando el desmontado del disco.

Si estás interesado en conocer el método de montaje que usan las distribuciones actuales para los dispositivos de almacenamiento tales como los discos usb, tarjetas de memoria...[+/-] Pulsa aquí.

Para liberar el bloqueo, necesitará identificar los programas que han quedado bloqueados mientras accedían al dispositivo de disco, para posteriormente finalizar el proceso. Y es en este punto donde interviene el comando fuser, quien nos muestra el pid, junto con letras que indican el tipo de acceso, de los procesos que están usando el recurso indicado. Le recomiendo echar un vistazo a la página man de fuser, en cualquier caso las opciones más útiles son:
  • -k Permite matar los procesos 
  • -m Muestra los pid de los procesos que están accediendo al recurso.
  • -v Activa el modo detallado (verbose mode); de esta forma además del pid se nos muestra el nombre del programa.

Así mismo, las letras que pueden aparecer para denotar el tipo de acceso son:
  • c El proceso está usando un archivo del directorio.
  • e si es un ejecutable.
  • f si está leyendo un archivo.
  • F si está escribiendo un archivo.
  • r si está en el directorio raíz
  • m si es una librería compartida.

Ejemplo de uso, sobre el directorio /home de mi sistema:

agd@agd-desktop $ fuser -mv /home/
                     USER        PID ACCESS COMMAND
/home/:              root     kernel mount /home
                     agd        6471 ..c.. gnome-session
                     agd        6540 ....m gnome-settings-
                     agd        6553 ..c.m metacity
                     agd        6559 ..c.m gnome-panel
                     agd        6587 ..c.. xbindkeys
                     agd        6588 ..c.m bluetooth-apple
                     agd        6590 ..c.. polkit-gnome-au
                     agd        6603 ....m mixer_applet2
                     agd        6617 F...m gvfsd-metadata
                     agd        6653 F.c.m chrome
                     agd        6656 ..c.. chrome
                     agd        6986 ..c.m gnome-terminal
                     agd        7068 ..c.. chrome
                     agd        7075 F.c.. chrome
                     agd        9306 f.c.m nautilus
                     agd        9613 ..c.m gcalctool
                     agd       10116 F.c.m gedit

Cuando fuser es ejecutado por un usuario sin privilegios solo se muestran los accesos de dicho usuario. En caso de ser ejecutado por root, se mostrarían todos los accesos.

Por tanto, en caso que al intentar desmontar un sistema de ficheros umount arroje un error indicando que el dispositivo está ocupado (umount: device is busy), puede matar los procesos que están bloqueando el dispositivo con fuser -kv /dispositivo. A continuación podrá desmontar el sistema de ficheros sin problemas.

0 comentarios:

Publicar un comentario en la entrada

Recuerde que puede utilizar algunos códigos HTML como <b>para negrita</b>, <i>para cursiva</i> y <a href="URL">para enlaces</a>.