У меня есть два связанных вопроса:
- Как узнать, загружена ли общая библиотека в данный момент? (т.е. общесистемный, независимый от процесса)
- Как я могу увидеть все общие библиотеки, загруженные процессом?
Вы можете сделать как с lsof
. Чтобы увидеть, какие процессы имеют открытую или сопоставленную библиотеку:
lsof /path/to/lib.so
и чтобы увидеть, какие файлы (включая общие библиотеки) процесс открыл и / или отобразил, выполните:
lsof -p <pid>
Другой способ увидеть, что загружено в процесс, - посмотреть на /proc/PID/maps
файл. Это показывает все, что сопоставлено с вашим адресным пространством, включая общие объекты.
lsof
не имела необходимой функциональности.хороший способ изучить все
/proc/PID/maps
упомянутое Ричем сразу. Образец вывода:Далее
awk
и bash-fu может улучшить вывод дальше.Этот метод также показывает библиотеки, открытые с
dlopen
помощью этой минимальной установки, взломанной с помощьюsleep(1000)
Ubuntu 18.04.источник
Вы можете запустить следующую команду от имени пользователя root и увидеть полный список,
Это для пользователей, у которых нет lsof.
источник