Mam dwa powiązane pytania:
- Jak mogę sprawdzić, czy biblioteka współdzielona jest aktualnie ładowana? (tj. w całym systemie, niezależnie od procesu)
- Jak mogę zobaczyć wszystkie biblioteki współdzielone ładowane przez proces?
Możesz zrobić obie te rzeczy lsof
. Aby zobaczyć, jakie procesy mają bibliotekę otwartą lub zmapowaną wykonaj:
lsof /path/to/lib.so
i aby zobaczyć, jakie pliki (w tym biblioteki współdzielone) proces otworzył i / lub zmapował, wykonaj:
lsof -p <pid>
Innym sposobem na sprawdzenie, co jest ładowane w procesie, jest przeglądanie /proc/PID/maps
pliku. Pokazuje wszystko zmapowane w przestrzeni adresowej, w tym zmapowane obiekty współdzielone.
lsof
nie miała wymaganej funkcjonalności.to dobry sposób na poznanie wszystkich
/proc/PID/maps
wymienionych przez Richa naraz. Przykładowe dane wyjściowe:Dalej,
awk
a bash-fu może dodatkowo udoskonalić wydajność.Ta metoda pokazuje również biblioteki otwarte przy użyciu
dlopen
, przetestowane przy użyciu tej minimalnej konfiguracji zhakowanej za pomocąsleep(1000)
Ubuntu 18.04.źródło
Możesz uruchomić następne polecenie z poziomu roota i zobaczyć pełną listę,
To jest dla użytkowników, którzy nie mają lsof.
źródło