viernes, 23 de julio de 2010

Cómo saber que procesos están utilizando el dispositivo

Introducción
En alguna ocasión al intentar desmontar una unidad Solaris nos ha devuelto el siguiente mensaje:

# umount /mnt
umount: /mnt ocupado
Esto significa que algún proceso está utilizando el dispositivo, pero, a simple vista no sabemos cuál es. Para ello disponemos del comando </usr/sbin/fuser> que nos proporciona dicha información, su formato es:
# fuser filename
La respuesta del comando será de la siguiente forma:
file:  pid{c|m|n|o|r|t|y} pid_n{c|m|n|o|r|t|y}
Donde 
  • c Indica que el proceso está utilizando file como current directory
  • m Indica que el proceso tiene mapeado file con nmap
  • n Indica que el proceso tiene un lock no bloqueante
  • o Indica que el proceso tiene  un descriptor de fichero a file
  • r Indica que el proceso tiene file como su directorio root
  • t Indica que el proceso tiene file como su text file
  • y Indica que el proceso usa file como su control de terminal
Ejemplo de uso
Para ilustrarlo mejor, por ejemplo, vamos a crear un nuevo sistema de ficheros siguiendo el post de Cómo Gestionar Archivos como Block Devices utilizando lofiadm y posteriormente cambiaremos nuestro current directory al punto de montaje para que no nos permitan desmontar la unidad.
# mkfile 50m /tmp/sfchildren.ufs
# lofiadm -a /tmp/sfchildren.ufs
/dev/lofi/1
# newfs /dev/rlofi/1
... omitimos los mensajes ...
# mount -F ufs /dev/lofi/1 /mnt
# cd /mnt
# umount /mnt
umount: /mnt ocupado
# fuser -u /mnt
/mnt:      286c(root)     201c(root)
# ps -ef|egrep "286|201"|grep -v grep|grep -v ps
    root   201   177   0 10:51:50 console     0:00 bash


Referencias

No hay comentarios:

Publicar un comentario