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).
En este artículo vemos cómo saber qué proceso está haciendo uso de dicho recurso, y de ser necesario, detenerlo.

 


 

 

 

 

 


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á 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

.