Chapitre 6. Utilitaires de surveillance du système

Table des matières

6.1. Liste des fichiers ouverts : lsof
6.2. Utilisateur qui accède aux fichiers : fuser
6.3. Propriétés d'un fichier : stat
6.4. Périphériques USB : lsusb
6.5. Informations relatives à un périphérique SCSI : scsiinfo
6.6. Processus : top
6.7. Liste des processus : ps
6.8. Arborescence de processus : pstree
6.9. Qui fait quoi : w
6.10. Utilisation de la mémoire : free
6.11. Tampon circulaire du kernel : dmesg
6.12. Les systèmes de fichiers et leur utilisation : mount, df et du
6.13. Le système de fichiers /proc
6.14. Ressources PCI : lspci
6.15. Appels système d'une exécution de programme : strace
6.16. Appels de bibliothèque d'une exécution de programme : ltrace
6.17. Spécification de la bibliothèque requise : ldd
6.18. Informations supplémentaires sur les fichiers binaires ELF
6.19. Communication entre processus : ipcs
6.20. Calculs de durée avec time

Résumé

Vous pouvez utiliser un certain nombre de programmes et de mécanismes, dont certains sont décrits ici, pour surveiller l'état de votre système. Ce chapitre contient également la description de certains utilitaires pratiques pour votre travail quotidien, ainsi que leurs principaux paramètres.

Pour chacune des commandes présentées, vous trouverez des exemples de sortie. Dans ces exemples, la première ligne contient la commande proprement dite (après le signe > ou dièze de l'invite). Les omissions sont indiquées par des crochets ([...]) et les lignes trop longues sont coupées si nécessaire. Les sauts de ligne insérés dans les lignes longues sont indiqués par une barre oblique inverse (\).

# command -x -y
output line 1
output line 2
output line 3 is annoyingly long, so long that \
    we have to break it
output line 3
[...]
output line 98
output line 99

Les descriptions sont très courtes pour permettre de citer autant d'utilitaires que possible. Des informations complémentaires sur toutes les commandes sont accessibles dans les pages de manuel. En outre, presque toutes les commandes acceptent le paramètre --help, qui génère une courte liste des paramètres possibles.


6.1. Liste des fichiers ouverts : lsof

Pour afficher la liste de tous les fichiers ouverts au cours du processus dont l'ID est PID, utilisez -p. Par exemple, pour afficher tous les fichiers utilisés par le shell actuel, entrez :

tester@linux:~> lsof -p $$
COMMAND  PID   USER   FD   TYPE DEVICE    SIZE   NODE NAME
bash    5552 tester  cwd    DIR    3,3    1512 117619 /home/tester
bash    5552 tester  rtd    DIR    3,3     584      2 /
bash    5552 tester  txt    REG    3,3  498816  13047 /bin/bash
bash    5552 tester  mem    REG    0,0              0 [heap] (stat: No such \
 file or directory)
bash    5552 tester  mem    REG    3,3  217016 115687 /var/run/nscd/passwd
bash    5552 tester  mem    REG    3,3  208464  11867 \
 /usr/lib/locale/en_GB.utf8/LC_CTYPE
bash    5552 tester  mem    REG    3,3  882134  11868 \
 /usr/lib/locale/en_GB.utf8/LC_COLLATE
bash    5552 tester  mem    REG    3,3 1386997   8837 /lib/libc-2.3.6.so
bash    5552 tester  mem    REG    3,3   13836   8843 /lib/libdl-2.3.6.so
bash    5552 tester  mem    REG    3,3  290856  12204 /lib/libncurses.so.5.5
bash    5552 tester  mem    REG    3,3   26936  13004 /lib/libhistory.so.5.1
bash    5552 tester  mem    REG    3,3  190200  13006 /lib/libreadline.so.5.1
bash    5552 tester  mem    REG    3,3      54  11842 \
 /usr/lib/locale/en_GB.utf8/LC_NUMERIC
bash    5552 tester  mem    REG    3,3    2375  11663 \
 /usr/lib/locale/en_GB.utf8/LC_TIME
bash    5552 tester  mem    REG    3,3     290  11736 \
 /usr/lib/locale/en_GB.utf8/LC_MONETARY
bash    5552 tester  mem    REG    3,3      52  11831 \
 /usr/lib/locale/en_GB.utf8/LC_MESSAGES/SYS_LC_MESSAGES
bash    5552 tester  mem    REG    3,3      34  11862 \
 /usr/lib/locale/en_GB.utf8/LC_PAPER
bash    5552 tester  mem    REG    3,3      62  11839 \
 /usr/lib/locale/en_GB.utf8/LC_NAME
bash    5552 tester  mem    REG    3,3     127  11664 \
 /usr/lib/locale/en_GB.utf8/LC_ADDRESS
bash    5552 tester  mem    REG    3,3      56  11735 \
 /usr/lib/locale/en_GB.utf8/LC_TELEPHONE
bash    5552 tester  mem    REG    3,3      23  11866 \
 /usr/lib/locale/en_GB.utf8/LC_MEASUREMENT
bash    5552 tester  mem    REG    3,3   21544   9109 \
 /usr/lib/gconv/gconv-modules.cache
bash    5552 tester  mem    REG    3,3     366   9720 \
 /usr/lib/locale/en_GB.utf8/LC_IDENTIFICATION
bash    5552 tester  mem    REG    3,3   97165   8828 /lib/ld-2.3.6.so
bash    5552 tester    0u   CHR  136,5              7 /dev/pts/5
bash    5552 tester    1u   CHR  136,5              7 /dev/pts/5
bash    5552 tester    2u   CHR  136,5              7 /dev/pts/5
bash    5552 tester  255u   CHR  136,5              7 /dev/pts/5
  

La variable de shell spéciale $$, dont la valeur correspond à l'ID de processus du shell, a été utilisée.

La commande lsof répertorie tous les fichiers actuellement ouverts lorsqu'elle est utilisée sans aucun paramètre. Comme il y a souvent des milliers de fichiers ouverts, il est rarement utile de tous les répertorier. Cependant, il est possible de combiner la liste de tous les fichiers avec des fonctions de recherche, afin de générer des listes utiles. Par exemple, vous pouvez répertorier tous les périphériques en mode caractères utilisés :

tester@linux:~> lsof | grep CHR
bash      3838     tester    0u      CHR  136,0                 2 /dev/pts/0
bash      3838     tester    1u      CHR  136,0                 2 /dev/pts/0
bash      3838     tester    2u      CHR  136,0                 2 /dev/pts/0
bash      3838     tester  255u      CHR  136,0                 2 /dev/pts/0
bash      5552     tester    0u      CHR  136,5                 7 /dev/pts/5
bash      5552     tester    1u      CHR  136,5                 7 /dev/pts/5
bash      5552     tester    2u      CHR  136,5                 7 /dev/pts/5
bash      5552     tester  255u      CHR  136,5                 7 /dev/pts/5
X         5646       root  mem       CHR    1,1              1006 /dev/mem
lsof      5673     tester    0u      CHR  136,5                 7 /dev/pts/5
lsof      5673     tester    2u      CHR  136,5                 7 /dev/pts/5
grep      5674     tester    1u      CHR  136,5                 7 /dev/pts/5
grep      5674     tester    2u      CHR  136,5                 7 /dev/pts/5