![]() |
En ocasiones al querer eliminar un archivo, o desmontar un directorio, obtenemos un mensaje avisando que el recurso se encuentra utilizado por algún proceso (o que se encuentra ocupado). |
La herramienta que utilizaremos para identificar qué proceso está empleando un recurso, archivo o socket es fuser. Viene implementado en todas las distribuciones de Linux, por lo que no sería un problema hacer uso de él.
Vamos a plantear varios ejemplos prácticos para conocer la versatilidad que nos provee fuser.
- Ver los procesos que están usando un directorio.
- Ver los procesos que están usando un archivo.
- Ver los procesos que están usando un socket.
- Matar procesos que accedan a determinado recurso.
Ver los procesos que está usando un directorio
Por ejemplo podemos ver todos los procesos que están haciendo uso del directorio de nuestro usuario en Linux, por ejemplo. Para ello ingresamos en la terminal
fuser -vm /home/usuario
Donde:
- usuario será el nombre de usuario activo.
- -vm son los parámetros donde v indica que muestre los resultados y m mapea los resultados. Por ejemplo agregando u (quedando -vmu) también listará el usuario que haya iniciado ese proceso.
Puedes probar más parámetros viendo el manual de fuser con
man fuser
Los datos son desplegados en una tabla con las siguientes columnas:
| USER | PID | ACCESS | COMMAND |
| Usuario del que depende el proceso | Número de id de proceso (todos los procesos se identifican con un número único denominado PID) |
Tipo de acceso del proceso al recurso | Nombre del comando |

Ver los procesos que están usando un archivo
Para ver qué proceso está haciendo uso de un determinado archivo, la historia no es muy distinta. Simplemente ingresamos
fuser -v archivo
Donde
- archivo puede ser la ruta absoluta al archivo como /home/cristian1604/Desktop/archivo ó la relativa si se encuentra ubicado en el mismo directorio
Aquí hemos quitado el parámetro m, ya que sino listará todo el árbol de procesos de los cuales depende el proceso final que hace uso del archivo en cuestión.
Por ejemplo, si se tiene Microsoft Word corriendo en Wine, al hacer
fuser -v archivo.docx
se obtendrá:
archivo.docx: cristian1604 4044 F..... WINWORD.EXE
cristian1604 4077 F..... wineserver
En vez de obtener también todo el árbol de procesos del cual depende Wine, Word, etcétera.

Ver los procesos que están usando un socket
Una forma de conseguir que dos programas se transmitan datos, basada en el protocolo TCP/IP, es la programación de sockets. Un socket no es más que un "canal de comunicación" entre dos programas que corren sobre ordenadores distintos o incluso en el mismo ordenador.
fuser puerto/protocolo
donde:
- puerto hace referencia al puerto que se desea obtener la lista de procesos que hacen uso de él. Si no se conoce el puerto, se puede reemplazar por el nombre genérico que hace uso de ese socket. Por ejemplo http:80 ssh:21 ftp:22 telnet:21
- protocolo el tipo de protocolo que emplea para la conexión. Puede ser TCP o UDP
Ejemplo:
fuser telnet/tcp

Matar procesos que accedan a determinado recurso
fuser -km recurso
Matará la lista de procesos que accedan al recurso (socket, directorio o archivo).
Licencia
. Ver información de licencia & cómo copiar material de esta web aquí. - Autor: Cristian1604
.

