Uso del comando lsof en Linux: Listado de Archivos Abiertos por Procesos

Artículos Guías Manuales Sistemas Linux Windows Binario 0

El comando lsof en Linux (abreviación de “list open files”) permite obtener una lista de los archivos abiertos por los procesos en el sistema. Este comando es esencial para administradores de sistemas, ya que ofrece información sobre archivos y recursos abiertos, lo cual es útil para diagnosticar problemas y gestionar procesos.

A continuación, se detallan los usos más comunes de lsof, que van desde el listado de archivos abiertos en general hasta la identificación de archivos abiertos por un proceso específico.

1. Listar todos los archivos abiertos

Para listar todos los archivos abiertos en el sistema, simplemente ejecuta el comando lsof sin argumentos adicionales. Esto muestra una lista detallada que incluye información sobre el proceso, el usuario y el archivo abierto:

lsof

Ejemplo de salida:

COMMAND  PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
bash 1234 user txt REG 8,1 1234567 567 /bin/bash

2. Listar archivos abiertos por un usuario específico

Para filtrar los archivos abiertos por un usuario en particular, utiliza la opción -u seguida del nombre de usuario:

lsof -u nombre_usuario

Esto mostrará solo los archivos abiertos por el usuario especificado.

3. Listar archivos abiertos por un proceso específico (PID)

Si deseas listar los archivos abiertos por un proceso con un ID específico, utiliza la opción -p seguida del número de PID:

lsof -p PID

Reemplaza PID por el identificador del proceso que deseas examinar.

4. Listar archivos abiertos en un directorio específico

Para listar los archivos abiertos en un directorio específico (por ejemplo, /var/log), emplea la opción +D seguida de la ruta del directorio:

lsof +D /ruta/del/directorio

Este comando es útil para ver qué archivos están siendo accedidos dentro de un directorio determinado.

5. Listar archivos abiertos en un dispositivo específico

Para ver todos los archivos abiertos en un dispositivo, usa la opción +L1 que incluye solo los archivos con un enlace físico en el dispositivo:

lsof +L1

6. Mostrar los archivos de red abiertos

Si necesitas ver únicamente las conexiones de red abiertas, utiliza la opción -i:

lsof -i

Esto es particularmente útil para identificar conexiones de red activas y sus respectivos procesos.

Filtrar archivos de red por protocolo

Para ver conexiones de red abiertas filtradas por protocolo específico (por ejemplo, TCP o UDP), especifica el protocolo de la siguiente manera:

lsof -i tcp
lsof -i udp

7. Listar archivos eliminados pero aún en uso

A veces, es útil identificar archivos que han sido eliminados del sistema de archivos pero que aún están abiertos por algún proceso. Para ello, puedes usar:

lsof | grep '(deleted)'

Este comando ayuda a liberar espacio en el sistema, ya que muestra los archivos que, aunque han sido eliminados, todavía están siendo retenidos por procesos activos.

8. Listar archivos abiertos por el nombre del proceso

Para filtrar por nombre del proceso, utiliza la opción -c:

lsof -c nombre_proceso

Esto mostrará los archivos abiertos por todos los procesos cuyo nombre coincide con el especificado.

9. Número total de archivos abiertos

Para comprobar el número total de archivos abiertos en linux, utiliza:

lsof | wc -l

Conclusión

El comando lsof es una herramienta poderosa y versátil que permite monitorear los archivos y recursos abiertos en un sistema Linux. Desde la supervisión de procesos específicos hasta la gestión de conexiones de red activas, este comando es esencial para el diagnóstico y la administración de sistemas en entornos Linux.