En los sistemas tipo Unix, "todo es un archivo". Esto incluye no solo documentos de texto, sino también librerías (.so), sockets de red, tuberías (pipes) y dispositivos de hardware.
1. Usando el comando lsof (Recomendado)
El comando lsof es la herramienta más completa para esta tarea. Requiere privilegios de superusuario (sudo) para ver archivos de procesos que no te pertenecen.
Listar todo lo abierto por un PID
sudo lsof -p [PID]
Filtrar por tipo de archivo
Si solo quieres ver archivos regulares (documentos, logs) y no librerías del sistema:
sudo lsof -p [PID] | grep REG
Explicación de las columnas principales:
FD (File Descriptor): El identificador del archivo para el proceso (ej.
cwdpara el directorio actual,txtpara el ejecutable, o números para archivos abiertos).TYPE:
REG(archivo regular),DIR(directorio),CHR(dispositivo de caracteres),IPv4/6(conexiones de red).NAME: La ruta absoluta del archivo o la dirección del socket.
2. Inspeccionando el sistema /proc (Sin herramientas externas)
El kernel de Linux expone información de los procesos en el directorio /proc. Es extremadamente útil si no tienes lsof instalado.
Ver los descriptores de archivo (fd)
Cada archivo abierto por el proceso tiene un enlace simbólico en este directorio:
ls -l /proc/[PID]/fd
Ver el mapa de memoria (Librerías y ejecutables)
Para ver qué librerías dinámicas (.so) tiene cargadas el proceso en memoria:
cat /proc/[PID]/maps
3. Usando fuser (Búsqueda inversa)
Si lo que quieres es saber qué proceso está usando un archivo o directorio específico en lugar de empezar por el PID:
# Ver quién usa un archivo concreto
fuser -v /ruta/al/archivo
# Ver quién usa un sistema de archivos o directorio
fuser -v /home/usuario/datos
Resumen de utilidad
Objetivo | Comando |
|---|---|
Ver todo (Red, Librerías, Logs) |
|
Ver solo archivos de datos |
|
Ver qué librerías usa |
|
Saber quién bloquea un archivo |
|
No hay comentarios:
Publicar un comentario