Odpowiedzi:
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.
sudo grep libcairo.so /proc/*/maps
to dobry sposób na poznanie wszystkich /proc/PID/maps
wymienionych przez Richa naraz. Przykładowe dane wyjściowe:
/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
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.
Możesz uruchomić następne polecenie z poziomu roota i zobaczyć pełną listę,
cat /proc/*/maps | awk '{print $6;}' | grep '\.so' | sort | uniq
To jest dla użytkowników, którzy nie mają lsof.
lsof
nie miała wymaganej funkcjonalności.