Pour diagnostiquer une application qui échoue
au démarrage, examinez les éléments suivants :
-
la description du paquet DEB ou RPM qui est à l’origine de l’installation du programme. Dans le cas où le programme a été compilé par vos soins, consultez dans ce cas les paramètres de compilation ;
-
les fichiers de configuration ;
-
les journaux d’événements ;
-
les filtrages réseau ;
-
les dépendances nécessaires ;
-
l’emplacement des bibliothèques ;
-
l’exécution de l’application en mode débogage (debug).
1. Description d’un paquet installé
La commande varie d’une distribution à l’autre :
Debian et Ubuntu
Commencez par afficher la description du paquet
concerné avec la commande apt-cache
show.
Syntaxeapt-cache show <nom_du_paquet>
Pas d’options pour cette commande.
Exemple avec DebianAfficher la description du programme Apache 2 :
# apt-cache show apache2 Package: apache2 Version: 2.2.22-13 Installed-Size: 29 Maintainer: Debian Apache Maintainers <debian- apache@lists.debian.org> Architecture: amd64 Depends: apache2-mpm-worker (= 2.2.22-13) | apache2-mpm-prefork (= 2.2.22-13) | apache2-mpm-event (= 2.2.22-13) | apache2-mpm-itk (= 2.2.22-13), apache2.2-common (= 2.2.22-13) Description-fr: Métapaquet pour le serveur HTTP Apache L’objectif de l’Apache Software Foundation est de construire un serveur HTTP sécurisé, performant et extensible en tant que logiciel open source respectant les standards. Le résultat a longtemps été le serveur web numéro un sur Internet. Il gère HTTPS, les serveurs virtuels, CGI, SSI, IPv6, l’intégration facile de scripts et de bases de données, le filtrage des requêtes/réponse, de nombreuses méthodes d’authentification flexibles et bien plus encore. Homepage: http://httpd.apache.org/ Description-md5: d24f049cd70ccfc178dd8974e4b1ed01 Tag: implemented-in::c, interface::daemon, network::server, network::service, protocol::http, protocol::ipv6, role::metapackage, role::program, suite::apache, web::server, works-with-format::html, works-with::text Section: httpd Priority: optional Filename: pool/main/a/apache2/apache2_2.2.22-13_amd64.deb Size: 1432 MD5sum: 04241cf30710ab7640e4c1b164044f16 SHA1: 5a5ed142817a0925b8ed087b585efbd0fb5a982e SHA256: ee95e97f002e9d988a05f8f2fc10bdb395629962126b841bab0849c3c598f958
Même si les dépendances
peuvent être affichées avec apt-cache
show, la commande apt-cache depends réalise également
cette opération.
Syntaxeapt-cache depends <nom_du_paquet>
Pas d’options pour cette commande.
Exemple avec DebianAfficher les dépendances du programme Apache 2 :
# apt-cache depends apache2 apache2 |Dépend: apache2-mpm-worke |Dépend: apache2-mpm-prefork |Dépend: apache2-mpm-event Dépend: apache2-mpm-itk Dépend: apache2.2-commonCentOS
Avec yum info,
vous obtenez les informations du paquet concerné.
Syntaxeyum info <nom>
Pas d’options pour cette commande.
Exemple# yum info httpd Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: mirror.ate.info * extras: mirror.ate.info * updates: mirror.ate.info Installed Packages Name : httpd Arch : x86_64 Version : 2.2.15 Release : 29.el6.centos Size : 2.9 M Repo : installed From repo : updates Summary : Apache HTTP Server URL : http://httpd.apache.org/ License : ASL 2.0 Description : The Apache HTTP Server is a powerful, efficient, and extensible : web server.
Vous pouvez également utiliser la
commande RPM pour connaître les fichiers de configuration
ou lire des informations d’un paquet.
Syntaxerpm <options> <nom>
Options nécessaires :
Option
|
Description
|
|
courte
|
longue
|
|
-q
|
(aucun)
|
Option de requête.
|
-c
|
--configfiles
|
Liste les fichiers de configuration.
|
-i
|
(aucun)
|
Affiche les informations du paquet.
|
Lister les fichiers de configuration de Apache 2 :
# rpm -qc httpd /etc/httpd/conf.d/welcome.conf /etc/httpd/conf/httpd.conf /etc/httpd/conf/magic /etc/logrotate.d/httpd /etc/sysconfig/htcacheclean /etc/sysconfig/httpd /var/www/error/HTTP_BAD_GATEWAY.html.var /var/www/error/HTTP_BAD_REQUEST.html.var /var/www/error/HTTP_FORBIDDEN.html.var /var/www/error/HTTP_GONE.html.var /var/www/error/HTTP_INTERNAL_SERVER_ERROR.html.var /var/www/error/HTTP_LENGTH_REQUIRED.html.var /var/www/error/HTTP_METHOD_NOT_ALLOWED.html.var /var/www/error/HTTP_NOT_FOUND.html.var /var/www/error/HTTP_NOT_IMPLEMENTED.html.var /var/www/error/HTTP_PRECONDITION_FAILED.html.var /var/www/error/HTTP_REQUEST_ENTITY_TOO_LARGE.html.var /var/www/error/HTTP_REQUEST_TIME_OUT.html.var /var/www/error/HTTP_REQUEST_URI_TOO_LARGE.html.var /var/www/error/HTTP_SERVICE_UNAVAILABLE.html.var /var/www/error/HTTP_UNAUTHORIZED.html.var /var/www/error/HTTP_UNSUPPORTED_MEDIA_TYPE.html.var /var/www/error/HTTP_VARIANT_ALSO_VARIES.html.var /var/www/error/contact.html.var /var/www/error/include/bottom.html /var/www/error/include/spacer.html /var/www/error/include/top.htmlObtenir des informations sur le paquet Apache 2 :
# rpm -qi httpd Name : httpd Relocations: (not relocatable) Version : 2.2.15 Vendor: CentOS Release : 29.el6.centos Build Date: mar. 13 août 2013 19:30:33 CEST Install Date: mer. 04 sept. 2013 19:41:04 CEST Build Host: c6b8.bsys.dev.centos.org Group : System Environment/Daemons Source RPM: httpd- 2.2.15-29.el6.centos.src.rpm Size : 3076447 License: ASL 2.0 Signature : RSA/SHA1, mar. 13 août 2013 19:32:39 CEST, Key ID 0946fca2c105b9de Packager : CentOS BuildSystem <http://bugs.centos.org> URL : http://httpd.apache.org/ Summary : Apache HTTP Server Description : The Apache HTTP Server is a powerful, efficient, and extensible web server.
2. Fichiers de configuration
Certains programmes proposent un utilitaire
pour vérifier la syntaxe de leurs fichiers de configuration.
Exemple avec DebianPour tester la configuration du programme Apache 2, l’utilitaire est apachectl.
Voici un résultat sans erreurs :
# apachectl -t Syntax OKAvec une erreur de syntaxe :
# apachectl -t Syntax error on line 187 of /etc/apache2/apache2.conf: Invalid command ’AccessFileNam’, perhaps misspelled or defined by a module not included in the server configuration Action ’-t’ failed. The Apache error log may have more information.La ligne 187 du fichier /etc/apache2/apache2.conf a une commande incorrecte. En effet, l’orthographe de la commande AccessFileName est erronée. Il manque un « e ».
Voici avez une autre solution pour tester :
# apache2ctl configtest Syntax error on line 187 of /etc/apache2/apache2.conf: Invalid command ’AccessFileNam’, perhaps misspelled or defined by a module not included in the server configuration Action ’configtest’ failed. The Apache error log may have more information.
3. Consulter les journaux
Généralement, lorsqu’un
programme échoue parce qu’il ne peut pas accéder à un
fichier ou à une ressource, il écrit une entrée
dans un journal système ou dans son propre journal.
Sur un écran dépourvu d’interface
graphique localement ou à distance, vous pouvez utiliser
un multiplexeur de terminaux en mode texte tel que GNU screen ou une version améliorée byobu. Ces applications ne sont pas installées nativement.
Ainsi dans une fenêtre, vous testez
l’application et dans une deuxième fenêtre vous
affichez un journal d’événements en temps
réel avec la commande tail.
Installation sur Debian et Ubuntu
Ces distributions ont dans leurs dépôts
respectifs les paquets du programme screen et byobu. Quitte à choisir,
il vaut mieux prendre byobu qui
est beaucoup plus convivial :
# apt-get install byobu Lecture des listes de paquets... Fait Construction de l’arbre des dépendances Lecture des informations d’état... Fait Les paquets supplémentaires suivants seront installés : python-newt screen tmux Paquets suggérés : apport run-one ttf-ubuntu-font-family update-notifier-common vim Les NOUVEAUX paquets suivants seront installés : byobu python-newt screen tmux 0 mis à jour, 4 nouvellement installés, 0 à enlever et 5 non mis à jour. Il est nécessaire de prendre 1 184 ko dans les archives. Après cette opération, 2 399 ko d’espace disque supplémentaires seront utilisés. Souhaitez-vous continuer [O/n] ?
Répondez O pour
continuer.
ATTENTION : les paquets suivants n’ont pas été authentifiés. tmux python-newt screen byobu Faut-il installer ces paquets sans vérification (o/N) ? o Réception de : 1 http://debian.proxad.net/debian/ wheezy/main tmux amd64 1.6-2 [249 kB Réception de : 2 http://debian.proxad.net/debian/ wheezy/main python-newt amd64 0.52.14-11.1 [129 kB] Réception de : 3 http://debian.proxad.net/debian/ wheezy/main screen amd64 4.1.0~20120320gitdb59704-7 [670 kB] Réception de : 4 http://debian.proxad.net/debian/ wheezy/main byobu all 5.16-1.1 [136 kB] 1 184 ko réceptionnés en 20s (57,8 ko/s) Préconfiguration des paquets... Sélection du paquet tmux précédemment désélectionné. (Lecture de la base de données... 176706 fichiers et répertoires déjà installés.) Dépaquetage de tmux (à partir de .../archives/tmux_1.6- 2_amd64.deb) ... Sélection du paquet python-newt précédemment désélectionné. Dépaquetage de python-newt (à partir de .../python-newt_0.52.14- 11.1_amd64.deb) ... Sélection du paquet screen précédemment désélectionné. Dépaquetage de screen (à partir de ... /screen_4.1.0~20120320gitdb59704-7_amd64.deb) ... Sélection du paquet byobu précédemment désélectionné. Dépaquetage de byobu (à partir de .../byobu_5.16-1.1_all.deb) ... Traitement des actions différées (« triggers ») pour « man-db »... Traitement des actions différées (« triggers ») pour « install- info »... Traitement des actions différées (« triggers ») pour « desktop- file-utils »... Traitement des actions différées (« triggers ») pour « gnome- menus »... Traitement des actions différées (« triggers ») pour « hicolor- icon-theme »... Paramétrage de tmux (1.6-2) ... Paramétrage de python-newt (0.52.14-11.1) ... Paramétrage de screen (4.1.0~20120320gitdb59704-7) ... Paramétrage de byobu (5.16-1.1) ...Installation sur CentOS
Byobu n’est
pas dans les dépôts de CentOS 6. En revanche, screen est présent :
# yum -y install screen Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: mirror.ate.info * extras: mirror.ate.info * updates: mirror.ate.info Setting up Install Process Resolving Dependencies --> Running transaction check ---> Package screen.x86_64 0:4.0.3-16.el6 will be installed --> Finished Dependency Resolution Dependencies Resolved ================================================================== Package Arch Version Repository Size ================================================================== Installing: screen x86_64 4.0.3-16.el6 base 494 k Transaction Summary ================================================================== Install 1 Package(s) Total download size: 494 k Installed size: 795 k Downloading Packages: screen-4.0.3-16.el6.x86_64.rpm | 494 kB 00:44 Running rpm_check_debug Running Transaction Test Transaction Test Succeeded Running Transaction Installing : screen-4.0.3-16.el6.x86_64 1/1 Verifying : screen-4.0.3-16.el6.x86_64 1/1 Installed: screen.x86_64 0:4.0.3-16.el6 Complete!
Vous pouvez lancer le programme screen :
Utilisez les touches ci-dessous pour gérer
les fenêtres :
Touche
|
Description
|
[Ctrl]+a puis [Ctrl]+C
|
Crée une fenêtre supplémentaire.
|
[Ctrl]+a puis
"
|
Affiche la liste des fenêtres.
|
[Ctrl]+a puis
n° de fenêtre.
|
Bascule vers la fenêtre mentionnée.
|
[Ctrl]+D
|
Ferme la fenêtre courante.
|
Si vous voulez utiliser byobu,
il faut ajouter le paquet gettext :
# yum -y install gettext Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: mirror.ate.info * extras: mirror.ate.info * updates: mirror.ate.info Setting up Install Process Resolving Dependencies --> Running transaction check ---> Package gettext.x86_64 0:0.17-16.el6 will be installed --> Processing Dependency: libgomp.so.1(GOMP_1.0)(64bit) for package: gettext-0.17-16.el6.x86_64 --> Processing Dependency: cvs for package: gettext-0.17-16.el6.x86_64 --> Processing Dependency: libgomp.so.1()(64bit) for package: gettext-0.17-16.el6.x86_64 --> Running transaction check ---> Package cvs.x86_64 0:1.11.23-15.el6 will be installed ---> Package libgomp.x86_64 0:4.4.7-3.el6 will be installed --> Finished Dependency Resolution Dependencies Resolved ================================================================== Package Arch Version Repository Size ================================================================== Installing: gettext x86_64 0.17-16.el6 base 1.8 M Installing for dependencies: cvs x86_64 1.11.23-15.el6 base 711 k libgomp x86_64 4.4.7-3.el6 base 118 k Transaction Summary ================================================================== Install 3 Package(s) Total download size: 2.7 M Installed size: 7.7 M Downloading Packages: (1/3): cvs-1.11.23-15.el6.x86_64.rpm | 711 kB 00:02 (2/3): gettext-0.17-16.el6.x86_64.rpm | 1.8 MB 00:07 (3/3): libgomp-4.4.7-3.el6.x86_64.rpm | 118 kB 00:00 ------------------------------------------------------------------ Total 203 kB/s | 2.7 MB 00:13 Running rpm_check_debug Running Transaction Test Transaction Test Succeeded Running Transaction Installing : libgomp-4.4.7-3.el6.x86_64 1/3 Installing : cvs-1.11.23-15.el6.x86_64 2/3 Installing : gettext-0.17-16.el6.x86_64 3/3 Verifying : gettext-0.17-16.el6.x86_64 1/3 Verifying : cvs-1.11.23-15.el6.x86_64 2/3 Verifying : libgomp-4.4.7-3.el6.x86_64 3/3 Installed: gettext.x86_64 0:0.17-16.el6 Dependency Installed: cvs.x86_64 0:1.11.23-15.el6 libgomp.x86_64 0:4.4.7-3.el6 Complete!
Vous devez rechercher le paquet byobu sur le site http://rpm.pbone.net ou le télécharger avec wget :
# wget ftp://ftp.muug.mb.ca/mirror/fedora/epel/6/x86_64/byobu-5 .21-4.el6.noarch.rpm --2013-09-05 19:37:48-- ftp://ftp.muug.mb.ca/mirror/fedora/ epel/6/x86_64/byobu-5.21-4.el6.noarch.rpm => «byobu-5.21-4.el6.noarch.rpm» Résolution de ftp.muug.mb.ca... 130.179.31.46, 130.179.31.46 connexion vers ftp.muug.mb.ca|130.179.31.46|:21...connecté. Ouverture de session en anonymous...Session établie! ==> SYST ... complété. ==> PWD ... complété. ==> TYPE I ... complété. ==> CWD (1) /mirror/fedora/epel/6/ x86_64 ... complété. ==> SIZE byobu-5.21-4.el6.noarch.rpm ... 121424 ==> PASV ... complété ==> RETR byobu-5.21-4.el6.noarch.rpm ... complété Longueur : 121424 (119k) (non certifiée) 100%[=================================>] 121 424 10,2k/s ds 19s 2013-09-05 19:38:11 (6,25 kB/s) - «byobu-5.21-4.el6.noarch.rpm» sauvegardé [121424]
Installez le paquet byobu-5.21-4.el6.noarch.rpm :
# rpm -ivh byobu-5.21-4.el6.noarch.rpm attention: byobu-5.21-4.el6.noarch.rpm: Entête V3 RSA/SHA256 Signature, key ID 0608b895: NOKEY Préparation... ########################################### [100%] 1:byobu ########################################### [100%]Utilisation de byobu
L’utilisation de byobu permet
de créer deux fenêtres lors d’un diagnostic. La première
sert à recueillir les nouvelles entrées dans un
journal et la seconde sert à lancer ou manipuler l’application.
Exemple avec DebianDans un terminal, en tant que root tapez : byobu. Vous obtenez cet écran :
Utilisez les touches ci-dessous pour gérer les fenêtres :
Touche
|
Description
|
[F2]
|
Crée une fenêtre supplémentaire.
|
[F3]
|
Permet de se déplacer vers la
fenêtre de gauche.
|
[F4]
|
Permet de se déplacer vers la
fenêtre de droite.
|
[F8]
|
Donne un nom à la fenêtre.
|
[F9]
|
Affiche le menu de configuration.
|
Ensuite, vous retournez dans la fenêtre 1: en appuyant sur [F4] pour démarrer le service Apache2 :
4. Filtrages réseau
Il est important de vérifier si vous
n’avez pas des règles de sécurité qui pourraient bloquer
ou restreindre le fonctionnement du programme.
La commande netstat permet
de visualiser les connexions réseau, notamment les ports
TCP ou UDP qui sont en écoute et leurs statuts.
Syntaxenetstat <options>
Options nécessaires :
Option
|
Description
|
|
courte
|
longue
|
|
-t
|
--tcp
|
Affiche le protocole TCP.
|
-u
|
--udp
|
Affiche le protocole UDP.
|
-l
|
--listening
|
Affiche les sockets du serveur à l’écoute.
|
-p
|
--programs
|
Affiche le nom et le PID des processus
propriétaires.
|
-n
|
--numeric
|
Affiche les adresses en format numérique.
|
Afficher le port d’écoute du programme Apache 2 :
# netstat -tulpn |grep apache2 tcp 0 0 10.0.2.15:80 0.0.0.0:* LISTEN 5661/apache2L’écoute se fait sur l’adresse IPv4 10.0.2.15 port TCP 80.
Regardez la configuration du pare-feu iptables.
Syntaxeiptables <options>
Options nécessaires :
Option
|
Description
|
|
courte
|
longue
|
|
-v
|
--verbose
|
Mode verbeux (verbose).
|
-L
|
--list
|
Liste les règles définies.
|
# iptables -vL Chain INPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination
Regardez également les règles
TCP Wrappers dans les fichiers /etc/hosts.allow et /etc/hosts.deny avec
la commande cat :
# cat /etc/hosts.allow /etc/hosts.deny # /etc/hosts.allow: list of hosts that are allowed to access the system. # See the manual pages hosts_access(5) and hosts_options(5). # # Example: ALL: LOCAL @some_netgroup # ALL: .foobar.edu EXCEPT terminalserver.foobar.edu # # If you’re going to protect the portmapper use the name "portmap" for the # daemon name. Remember that you can only use the keyword "ALL" and IP # addresses (NOT host or domain names) for the portmapper, as well as for # rpc.mountd (the NFS mount daemon). See portmap(8) and rpc.mountd(8) # for further information. # # /etc/hosts.deny: list of hosts that are _not_ allowed to access the system. # See the manual pages hosts_access(5) and hosts_options(5). # # Example: ALL: some.host.name, .some.domain # ALL EXCEPT in.fingerd: other.host.name, .other.domain # # If you’re going to protect the portmapper use the name "portmap" for the # daemon name. Remember that you can only use the keyword "ALL" and IP # addresses (NOT host or domain names) for the portmapper, as well as for # rpc.mountd (the NFS mount daemon). See portmap(8) and rpc.mountd(8) # for further information. # # The PARANOID wildcard matches any host whose name does not match its # address. # # You may wish to enable this to ensure any programs that don’t # validate looked up hostnames still leave understandable logs. In past # versions of Debian this has been the default. # ALL: PARANOID
5. Dépendances du programme
Le programme peut faire appel à des
fonctions stockées dans des bibliothèques. La
commande ldd (List Dynamic Dependencies) affiche la liste des bibliothèques partagées
qui sont nécessaires pour un programme ou une bibliothèque.
Syntaxeldd <fichier>
Option utile :
Option
|
Description
|
|
courte
|
longue
|
|
-v
|
--verbose
|
Mode verbeux (verbose).
|
Afficher les bibliothèques dépendantes pour le programme Apache 2 :
# ldd $(which apache2) linux-vdso.so.1 => (0x00007fffea9ff000) libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007fb3dd327000) libaprutil-1.so.0 => /usr/lib/libaprutil-1.so.0 (0x00007fb3dd102000) libapr-1.so.0 => /usr/lib/libapr-1.so.0 (0x00007fb3dcec8000) libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fb3dccac000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fb3dc922000) libuuid.so.1 => /lib/x86_64-linux-gnu/libuuid.so.1 (0x00007fb3dc71c000) librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007fb3dc514000) libcrypt.so.1 => /lib/x86_64-linux-gnu/libcrypt.so.1 (0x00007fb3dc2dd000) libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fb3dc0d8000) libexpat.so.1 => /lib/x86_64-linux-gnu/libexpat.so.1 (0x00007fb3dbeae000) /lib64/ld-linux-x86-64.so.2 (0x00007fb3dd7f8000)À son tour, une bibliothèque partagée peut avoir une dépendance. Et ainsi de suite... Voici l’exemple de libc.so.6 :
# ldd /lib/x86_64-linux-gnu/libc.so.6 /lib64/ld-linux-x86-64.so.2 (0x00007f7bf191e000) linux-vdso.so.1 => (0x00007ffff6dff000)L’option -v affiche de façon plus détaillée les informations :
ldd -v /lib/x86_64-linux-gnu/libc.so.6 /lib64/ld-linux-x86-64.so.2 (0x00007f7fb1c94000) linux-vdso.so.1 => (0x00007ffff49cc000) Version information: /lib/x86_64-linux-gnu/libc.so.6: ld-linux-x86-64.so.2 (GLIBC_2.3) => /lib64/ld-linux-x86-64.so.2 ld-linux-x86-64.so.2 (GLIBC_PRIVATE) => /lib64/ld-linux-x86- 64.so.2
6. Emplacement des bibliothèques
Lorsqu’une bibliothèque n’est pas à un
emplacement standard, elle est signalée manquante par le
chargeur. Il faut ajouter son chemin à la variable d’environnement LD_LIBRARY_PATH pour
qu’elle soit prise en compte :
$ export LD_LIBRARY_PATH=/home/bob/lib
Cette méthode est généralement
utilisée pour la mise au point d’un programme.
Si vous souhaitez ajouter définitivement
un emplacement de bibliothèques, il est préférable
d’utiliser le fichier /etc/ld.so.conf :
# cat /etc/ld.so.conf include /etc/ld.so.conf.d/*.conf
Il contient une directive qui inclut tous
les fichiers du dossier /etc/ld.so.conf.d dont
l’extension est .conf.
Le dossier /etc/ld.so.conf.d/ contient
une liste de fichiers qui varie selon les distributions :
# ls -l /etc/ld.so.conf.d/ total 2 -rw-r--r-- 1 root root 44 déc. 30 15:17 libc.conf -rw-r--r-- 1 root root 68 déc. 30 16:34 x86_64-linux-gnu.conf
La commande ldconfig crée
les liens et met en cache les bibliothèques partagées les
plus récentes qu’il trouve dans les chemins indiqués
sur la ligne de commande, dans le fichier /etc/ld.so.conf et
dans les dossiers /lib et /usr/lib.
Syntaxeldconfig <option>
Options utiles :
Option
|
Description
|
|
courte
|
longue
|
|
-v
|
--verbose
|
Mode verbeux (verbose).
|
-p
|
--print-cache
|
Affiche les dossiers et les bibliothèques
enregistrés dans le cache.
|
Visualisez le contenu de tous les dossiers contenant des bibliothèques partagées :
# ldconfig -v ldconfig: Chemin « /lib/x86_64-linux-gnu » donné plus d’une fois ldconfig: Chemin « /usr/lib/x86_64-linux-gnu » donné plus d’une fois /usr/local/lib: /lib/x86_64-linux-gnu: libiw.so.30 -> libiw.so.30 libpcprofile.so -> libpcprofile.so libpopt.so.0 -> libpopt.so.0.0.0 libsepol.so.1 -> libsepol.so.1 libutil.so.1 -> libutil-2.13.so libdevmapper.so.1.02.1 -> libdevmapper.so.1.02.1 ...Affichez le contenu du cache :
# lsconfig -p # 809 libs trouvé dans le cache « /etc/ld.so.cache » libzvbi.so.0 (libc6,x86-64) => /usr/lib/x86_64-linux- gnu/libzvbi.so.0 libzvbi-chains.so.0 (libc6,x86-64) => /usr/lib/x86_64-linux- gnu/libzvbi-chains.so.0 libzephyr.so.4 (libc6,x86-64) => /usr/lib/libzephyr.so.4 libzbar.so.0 (libc6,x86-64) => /usr/lib/libzbar.so.0 libz.so.1 (libc6,x86-64) => /lib/x86_64-linux-gnu/libz.so.1 libyelp.so.0 (libc6,x86-64) => /usr/lib/libyelp.so.0 libyajl.so.2 (libc6,x86-64) => /usr/lib/x86_64-linux- gnu/libyajl.so.2 ...
La commande strace est
un outil de débogage pour surveiller les appels système
(system calls) utilisés par un programme ainsi que tous les
signaux qu’il reçoit.
Syntaxestrace <programme>
Pas d’options pour cette commande.
Installation Debian et Ubuntu# apt-get install strace Lecture des listes de paquets... Fait Construction de l’arbre des dépendances Lecture des informations d’état... Fait Les NOUVEAUX paquets suivants seront installés : strace 0 mis à jour, 1 nouvellement installés, 0 à enlever et 5 non mis à jour. Il est nécessaire de prendre 141 ko dans les archives. Après cette opération, 414 ko d’espace disque supplémentaires seront utilisés. ATTENTION : les paquets suivants n’ont pas été authentifiés. strace Faut-il installer ces paquets sans vérification (o/N) ? o Réception de : 1 http://debian.proxad.net/debian/ wheezy/main strace amd64 4.5.20-2.3 [141 kB] 141 ko réceptionnés en 3s (46,6 ko/s) Sélection du paquet strace précédemment désélectionné. (Lecture de la base de données... 159847 fichiers et répertoires déjà installés.) Dépaquetage de strace (à partir de .../strace_4.5.20- 2.3_amd64.deb) ... Traitement des actions différées (« triggers ») pour « man-db »... Paramétrage de strace (4.5.20-2.3) ...Installation CentOS
# yum -y install strace Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: mirror.ate.info * extras: mirror.ate.info * updates: mirror.ate.info Setting up Install Process Resolving Dependencies --> Running transaction check ---> Package strace.x86_64 0:4.5.19-1.17.el6 will be installed --> Finished Dependency Resolution Dependencies Resolved ================================================================== Package Arch Version Repository Size ================================================================== Installing: strace x86_64 4.5.19-1.17.el6 base 172 k Transaction Summary ================================================================== Install 1 Package(s) Total download size: 172 k Installed size: 533 k Downloading Packages: strace-4.5.19-1.17.el6.x86_64.rpm | 172 kB 00:00 Running rpm_check_debug Running Transaction Test Transaction Test Succeeded Running Transaction Warning: RPMDB altered outside of yum. Installing : strace-4.5.19-1.17.el6.x86_64 1/1 Verifying : strace-4.5.19-1.17.el6.x86_64 1/1 Installed: strace.x86_64 0:4.5.19-1.17.el6 Complete!Utilisation de strace
Exemple avec Debian
Liste des appels système utilisés et des signaux reçus pour le programme Apache 2 :
# strace apache2 execve("/usr/sbin/apache2", ["apache2"], [/* 17 vars */]) = 0 brk(0) = 0x7f8a965d3000 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f8a95f68000 access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory) open("/etc/ld.so.cache", O_RDONLY)
Aucun commentaire :
Enregistrer un commentaire