title: Lsof
text: # Lsof
  
  lsof (Lista de archivos abiertos, en español) es una conocida herramienta de monitorización de sistemas operativos tipo Unix que se utiliza para mostrar todos los archivos de disco que mantienen abiertos los procesos, incluyendo los sockets de red abiertos, tuberías, entre otros tipos.
  El comando lsof brinda al usuario información detallada acerca del contexto donde se utiliza el archivo. Entre la información se encuentra:
  * nombre e id del proceso,
  * nombre o id del usuario que lanzó dicho proceso,
  * El descriptor de archivo junto con el modo de apertura (lectura,escritura,etc.. ),
  * El tipo de nodo asociado al archivo: Tubería (FIFO), Socket IPV4, Socket IPv6, Directorio, Bloque de Dispositivo,etc..
  * La ruta absoluta del archivo o bien información relativa según el tipo,
  * El contexto de seguridad SELinux
  lsof es software libre y su autor original es Victor A. Abell.
  
  # Lsof
  ## Modo de uso
  
  En la invocación del comando lsof, se permite identificar que procesos están utilizando el o los archivos indicados.
  Alguno de los parámetros que posee lsof son:
  
  # Lsof
  ## Modo de uso
  ### -a
  
      Permite que las opciones (parámetros) sean requisitos para listar. Útil cuando se "filtra" usando -c, -g, -u o -p.
  
  # Lsof
  ## Modo de uso
  ### -c CADENA
  
      Lista los archivos de los procesos que comiencen con CADENA
  
  # Lsof
  ## Modo de uso
  ### -d FDs
  
      Determina que se deben excluir el o los Descriptores de Archivos (FD) del listado. Los valores se separan por comas.
  
  # Lsof
  ## Modo de uso
  ### +d DIRECTORIO
  
      Lista los procesos que utilicen el directorio o bien alguno de los archivos que contenga.
  
  # Lsof
  ## Modo de uso
  ### +D DIRECTORIO
  
      idem al anterior pero recursivo:incluye a los subdirectorios y archivos que estos contengan
  
  # Lsof
  ## Modo de uso
  ### -i
  
      Lista los sockets abiertos.
  
  # Lsof
  ## Modo de uso
  ### -g GID
  
      Lista los archivos lanzados por el GID (ID de Grupo) indicado.
  
  # Lsof
  ## Modo de uso
  ### -n
  
      No resuelve los nombres de dominio.
  
  # Lsof
  ## Modo de uso
  ### -p PID
  
      Lista los archivos abiertos por el proceso con el PID (ID de Proceso) indicado.
  
  # Lsof
  ## Modo de uso
  ### -P
  
      No resuelve los nombres de los puertos (conexiones).
  
  # Lsof
  ## Modo de uso
  ### [+|-]r [N [mCADENA]]
  
      Imprime en pantalla el resultado cada N segundos, si no se especifica se ejecuta cada 15. Si se utiliza el prefijo '-' se repite esta operación hasta que el usuario lo cancele (ctrl+C), en cambio si se utiliza el prefijo '+', el proceso termina cuando no haya archivos listados. Adicionalmente entre cada actualización es posible indicarle cual es la cadena de texto que separa cada resultado, a través mCADENA. En caso de no indicarle ninguna cadena, por default se utiliza '======='.
  
  # Lsof
  ## Modo de uso
  ### -u [usuario|UID]
  
      Lista los archivos abiertos por el usuario o bien UID (ID de Usuario).
  
  # Lsof
  ## Modo de uso
  ### -U
  
      Lista los sockets UNIX (IPC sockets).
  Si no se indica ningún parámetro lsof enumera todos los archivos abiertos en ese momento, que normalmente suelen ser bastantes.
  
  # Lsof
  ## Ejemplos
  
  Listar los archivos abiertos por el proceso firefox. Se utilizaron expresiones regulares para garantizar que sea dicho proceso:
  lsof -c "/\bfirefox\b/"
  Listar los procesos que hacen uso del archivo /home/usuario/archivo.txt:
  lsof /home/usuario/archivo.txt
  Listar los archivos abiertos pertenecientes al home del usuario actual. La tilde (~) es el alias del home del usuario:
  lsof +D ~
  Listar los sockets abiertos por el proceso cuyo nombre contenga "java" (filtrado por grep):
  lsof -i -n -P | grep java
  Resultado: