Як побачити завантажені в даний час спільні об'єкти в Linux?


34

У мене два суміжні питання:

  • Як я можу побачити, чи завантажена спільна бібліотека наразі? (тобто загальносистемний, агностичний процес)
  • Як я можу бачити всі спільні бібліотеки, завантажені процесом?

Відповіді:


40

Ви можете зробити і те, і інше lsof. Щоб побачити, які процеси мають відкриту або відображену бібліотеку, виконайте такі дії:

lsof /path/to/lib.so

і щоб побачити, які файли (включаючи спільні бібліотеки), який процес відкрив та / або відображено, виконайте:

lsof -p <pid>

22

Ще один спосіб побачити, що завантажено в процесі - перегляньте /proc/PID/mapsфайл. Це показує все, відображене у вашому адресному просторі, включаючи спільні об’єкти, відображені у.


Чудово працював на моїй вбудованій платформі ARM. Хоча реалізація BusyBox lsofне мала необхідної функціональності.
Алекс Че

7
sudo grep libcairo.so /proc/*/maps

це приємний спосіб оглянути відразу все /proc/PID/maps згадане Річком . Вибірка зразка:

/proc/8390/maps:7f0a9afae000-7f0a9b0bc000 r-xp 00000000 fc:00 274690                     /usr/lib/x86_64-linux-gnu/libcairo.so.2.11400.6
/proc/8390/maps:7f0a9b0bc000-7f0a9b2bc000 ---p 0010e000 fc:00 274690                     /usr/lib/x86_64-linux-gnu/libcairo.so.2.11400.6
/proc/8390/maps:7f0a9b2bc000-7f0a9b2bf000 r--p 0010e000 fc:00 274690                     /usr/lib/x86_64-linux-gnu/libcairo.so.2.11400.6
/proc/8390/maps:7f0a9b2bf000-7f0a9b2c0000 rw-p 00111000 fc:00 274690                     /usr/lib/x86_64-linux-gnu/libcairo.so.2.11400.6
/proc/8466/maps:7f0a9afae000-7f0a9b0bc000 r-xp 00000000 fc:00 274690                     /usr/lib/x86_64-linux-gnu/libcairo.so.2.11400.6
/proc/8466/maps:7f0a9b0bc000-7f0a9b2bc000 ---p 0010e000 fc:00 274690                     /usr/lib/x86_64-linux-gnu/libcairo.so.2.11400.6
/proc/8466/maps:7f0a9b2bc000-7f0a9b2bf000 r--p 0010e000 fc:00 274690                     /usr/lib/x86_64-linux-gnu/libcairo.so.2.11400.6
/proc/8466/maps:7f0a9b2bf000-7f0a9b2c0000 rw-p 00111000 fc:00 274690                     /usr/lib/x86_64-linux-gnu/libcairo.so.2.11400.6

Далі awkі баш-фу може додатково вдосконалити вихід.

Цей метод також показує бібліотеки, відкриті dlopen, протестовані з цією мінімальною установкою, підключеною до sleep(1000)Ubuntu 18.04.


4

Ви можете запустити наступну команду через root і побачити повний список,

cat /proc/*/maps | awk '{print $6;}' | grep '\.so' | sort | uniq

Це для користувачів, які не мають lsof.


Чому ви хочете, щоб користувач спробував це? Будь ласка, відредагуйте свою відповідь, щоб краще зрозуміти.
CaldeiraG
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.