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.