57 votes

Comment voir les objets partagés actuellement chargés sous Linux ?

J'ai deux questions connexes :

  • Comment puis-je voir si une bibliothèque partagée est actuellement chargée ? (c'est-à-dire à l'échelle du système, sans tenir compte des processus)
  • Comment puis-je voir toutes les bibliothèques partagées chargées par un processus ?

61voto

TomH Points 2974

Vous pouvez faire les deux avec lsof . Pour voir quels processus ont une bibliothèque ouverte ou mappée :

lsof /path/to/lib.so

et pour voir quels fichiers (y compris les bibliothèques partagées) un processus a ouvert et/ou mappé, faites :

lsof -p <pid>

32voto

Lark Points 1640

Une autre façon de voir ce qui est chargé dans un processus est de regarder le fichier /proc/PID/maps fichier. Il montre tout ce qui est mappé dans votre espace d'adressage, y compris les objets partagés mappés.

10voto

sudo grep libcairo.so /proc/*/maps

est un bon moyen d'explorer toutes les /proc/PID/maps mentionné 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

Plus d'informations sur awk et bash-fu peut affiner davantage la sortie.

Cette méthode montre également les bibliothèques ouvertes avec dlopen testé avec cette installation minimale piraté avec un sleep(1000) sur Ubuntu 18.04.

6voto

Nobutarou Points 71

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.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X