Réponses:
Vous pouvez faire les deux avec lsof. Pour voir quels processus ont une bibliothèque ouverte ou mappée, procédez comme suit:
lsof /path/to/lib.so
et pour voir quels fichiers (y compris les bibliothèques partagées) un processus a ouverts et / ou mappés, procédez comme suit:
lsof -p <pid>
Une autre façon de voir ce qui est chargé dans un processus est de regarder le /proc/PID/mapsfichier. Cela montre tout ce qui est mappé dans votre espace d'adressage, y compris les objets partagés mappés dans.
sudo grep libcairo.so /proc/*/maps
est une belle façon d'explorer tous les éléments /proc/PID/maps mentionnés par Rich à la fois. 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
De plus awk, bash-fu peut affiner davantage la sortie.
Cette méthode montre é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
C'est pour les utilisateurs qui n'ont pas lsof.
lsofn'avait pas les fonctionnalités nécessaires.