Commandes Strace pour le dépannage des processus Linux

Lorsque sous notre responsabilité, nous avons des machines avec des systèmes d'exploitation Linux, l'un des moyens les plus utiles et pratiques de gérer correctement chaque aspect de ceux-ci est de connaître les différents utilitaires et commandes qui existent pour les déployer et les prendre en charge.

Cette fois, Solvetic parlera d'un utilitaire de ligne de commande appelé strace et nous verrons comment cela peut devenir pratique pour l'administration du système d'exploitation.

Qu'est-ce que stracestrace est un outil de ligne de commande utile pour diagnostiquer, instruire et exécuter des tâches de débogage. Les administrateurs système trouvent strace un outil pratique pour résoudre les problèmes avec les programmes pour lesquels la source n'est pas disponible puisqu'ils n'ont pas besoin d'être recompilés pour les tracer.
L'outil strace capture et enregistre tous les appels système effectués par un processus et les signaux reçus par le processus, strace se charge d'afficher le nom de chaque appel système ainsi que ses arguments entre parenthèses et sa valeur de retour à l'erreur standard, en option, il sera possible de le rediriger vers un fichier.

1. Pose des strass


Pour installer strace, nous devons exécuter l'une des commandes suivantes :
 sudo apt install strace (Debian ou Ubuntu) yum install strace (RedHat ou CentOS) dnf install strace (Fedora)
Dans le cas où un programme plante ou se comporte de manière inattendue, il sera possible d'accéder aux appels système pour avoir une idée de ce qui s'est exactement passé lors de son exécution.

Les appels système peuvent être classés en différents événements : ceux liés à la gestion des processus, ceux qui prennent un fichier comme argument, ceux qui impliquent des réseaux, l'allocation de mémoire, les signaux, IPC et aussi les appels système liés aux descripteurs de fichiers.

2. Comment résoudre les problèmes de processus sous Linux avec les commandes strace


Ensuite, nous allons voir différentes commandes strace pour résoudre les différents problèmes de processus qui peuvent survenir sous Linux.

Tracer les appels système avec straceCette option nous permet de suivre tous les appels système effectués par la commande df, pour cela nous exécutons ce qui suit :

 strace df -h

Dans cette sortie, nous pouvons voir différents types d'appels système effectués par la commande df, par exemple, l'un d'entre eux est :

 open ("/etc/ld.so.cache", O_RDONLY | O_CLOEXEC) = 3
Où:
  • Ouvert : C'est le type d'appel système
  • C'est l'argument de l'appel système : "/etc/ld.so.cache", O_RDONLY | O_CLOEXEC
  • 3: C'est la valeur de retour de l'appel système

Tracer les processus PID LinuxSi un processus est déjà en cours d'exécution sur le système, il sera possible de le tracer via son PID comme suit :

 sudo strace -c -p 465
Cela remplira l'écran avec la sortie continue qui montre que les appels système sont effectués par le processus, pour terminer, nous allons appuyer sur les touches Ctrl + C.

Obtenir le résumé d'un processus LinuxEn utilisant le paramètre -c, il sera possible de générer un rapport du temps total, des appels et des erreurs pour chaque appel système, pour cela nous exécuterons la syntaxe suivante :

 sudo strace -c -p (PID)

Imprimer le pointeur d'instruction pendant l'appel système. L'option -i affiche le pointeur d'instruction au moment de chaque appel système effectué par le programme.

 sudo strace -i df -h

Afficher l'heure pour chaque ligne de sortie de traceAvec strace, il est possible d'imprimer l'heure de chaque ligne de la sortie de trace, en utilisant l'indicateur -t :

 sudo strace -t df -h

Afficher le temps d'impression passé sur les appels systèmePour afficher la différence de temps entre le début et la fin de chaque appel système effectué par un programme, nous devons utiliser l'option -T :

 sudo strace -T df -h

Tracer des appels spécifiquesLa commande trace = write est connue sous le nom d'expression qualifiée, où trace est un qualificateur (d'autres incluent signal, abréviation, verbose, raw, read ou write). Dans ce cas, vous saisissez la valeur du qualificateur. La commande suivante affiche en temps réel les appels système pour imprimer la sortie df sur la sortie standard :

 sudo strace -e trace = écrire df -h

Certaines commandes supplémentaires que nous pouvons utiliser sont :

 sudo strace -e trace = ouvrir, fermer df -hsudo strace -e trace = ouvrir, fermer, lire, écrire df -hsudo strace -e trace = tout df -h

Tracer les appels système en fonction d'une conditionCette commande peut être utilisée pour tracer tous les appels système qui impliquent la gestion des processus, nous exécuterons ce qui suit :

 sudo strace -q -e trace = processus df -h

Maintenant, pour tracer tous les appels système qui prennent un nom de fichier en argument, nous allons lancer la commande suivante :

 sudo strace -q -e trace = fichier df -h

Pour tracer tous les appels système impliquant une allocation de mémoire, nous allons exécuter la ligne suivante :

 sudo strace -q -e trace = mémoire df -h

Rediriger la trace vers le fichier de sortieSi nous voulons écrire les messages de suivi envoyés à une erreur standard dans un fichier, nous utiliserons l'option -o. Cela signifie que seule la sortie de la commande est imprimée à l'écran comme suit :

 sudo strace -o df_debug.txt df -h

On peut visualiser ce fichier en exécutant la ligne :

 chat df_debug.txt

Déployer la sortie de débogage de straceSi nous voulons afficher les informations de débogage pour l'outil strace, nous devons utiliser le drapeau -d :

 strace -d df -h

AidePour afficher l'aide de la commande strace nous allons exécuter la ligne suivante :

 homme

C'est ainsi que nous avons vu comment strace devient une aide supplémentaire pour les tâches de gestion dans les distributions Linux.

Vous contribuerez au développement du site, partager la page avec vos amis

wave wave wave wave wave