Tengo dos preguntas relacionadas:
- ¿Cómo puedo ver si una biblioteca compartida está cargada actualmente? (es decir, en todo el sistema, independiente del proceso)
- ¿Cómo puedo ver todas las bibliotecas compartidas cargadas por un proceso?
Puedes hacer ambas cosas con lsof
. Para ver qué procesos tienen una biblioteca abierta o asignada, haga lo siguiente:
lsof /path/to/lib.so
y para ver qué archivos (incluidas las bibliotecas compartidas) ha abierto y / o asignado un proceso, haga lo siguiente:
lsof -p <pid>
Otra forma de ver lo que se carga en un proceso es mirando el /proc/PID/maps
archivo. Esto muestra todo lo mapeado en su espacio de direcciones, incluidos los objetos compartidos mapeados.
lsof
no tenía la funcionalidad necesaria.es una buena manera de explorar todo lo
/proc/PID/maps
mencionado por Rich a la vez. Salida de muestra:Además
awk
y bash-fu puede refinar aún más la salida.Este método también muestra bibliotecas abiertas con
dlopen
, probadas con esta configuración mínima pirateada con unsleep(1000)
en Ubuntu 18.04.fuente
Puede ejecutar el siguiente comando por root y ver una lista completa,
Esto es para usuarios que no tienen lsof.
fuente