J'ai deux questions liées:
Vous pouvez faire les deux avec lsof
. Pour voir quels processus ont une bibliothèque ouverte ou mappée, faites:
lsof /path/to/lib.so
et pour voir quels fichiers (y compris les bibliothèques partagées) un processus est ouvert et/ou mappé, faites:
lsof -p <pid>
Une autre façon de voir ce qui est chargé dans un processus consiste à consulter le fichier /proc/PID/maps
. Cela montre tout ce qui est mappé dans votre espace d'adressage, y compris les objets partagés mappés.
Sudo grep libcairo.so /proc/*/maps
est un bon moyen d’explorer tous les /proc/PID/maps
mentionnés par Rich en même temps. Exemple de sortie:
/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
et bash-fu peuvent affiner le résultat.
Cette méthode affiche également les bibliothèques ouvertes avec dlopen
, testées avec cette configuration minimale piratée avec un sleep(1000)
sur Ubuntu 18.04.
Vous pouvez exécuter la commande suivante par root et voir une liste complète,
cat /proc/*/maps | awk '{print $6;}' | grep '\.so' | sort | uniq
Ceci est pour les utilisateurs qui n'ont pas lsof.