viernes, 2 de enero de 2009

Las bondades de fuser

A veces al desmontar un dispositivo, por ejemplo un usb aparece el desagradable mensaje "El dispositivo está ocupado", no hay problema, con el comando de linux "fuser" podemos saber que o quien ocupa nuestro dispositivo o puerto.

Ejecutando "fuser" desde un terminal, si el recurso esta siendo usado, nos informa de quien y que proceso lo mantiene ocupado.

-a display unused files too
-c mounted FS
-f silently ignored (for POSIX compatibility)
-i ask before killing (ignored without -k)
-k kill processes accessing the named file
-l list available signal names
-m show all processes using the named filesystems
-n SPACE search in this name space (file, udp, or tcp)
-s silent operation
-SIGNAL send this signal instead of SIGKILL
-u display user IDs
-v verbose output
-V display version information
-4 search IPv4 sockets only
-6 search IPv6 sockets only
- reset options

udp/tcp names: [local_port][,[rmt_host][,[rmt_port]]]


Al reproducir una pelicula en un disco duro externo se produce un bloqueo, ejecutando "fuser -v -m /media/Lacie".

-v salida detallada
-m todos los procesos de la ruta asignada

[nexus6@nexus6 ~]$ fuser -v -m /media/LaCie/
USER PID ACCESS COMMAND
/media/LaCie/: nexus6 24499 f.... dragon


tenemos el ID del proceso que podriamos matar con:

kill 24499

pero añadiendo -k matamos el proceso directamente:

fuser -v -k -m /media/Lacie

fuser también nos puede informar de que proceso ocupa un puerto, en este caso el puerto 22, "fuser -v-n tcp 21":

[nexus6@nexus6 ~]$ fuser -v-n tcp 21
USER PID ACCESS COMMAND
21/tcp: nexus6 4321
F. raíz ... vsftpd

Vsftpd esta utilizando el puerto 21, con la opcion -k se puede terminar con el proceso.