GNU/Linux >> Tutoriels Linux >  >> Linux

Un guide de la commande Linux "Top"

La commande top permet aux utilisateurs de surveiller les processus et l'utilisation des ressources système sous Linux. C'est l'un des outils les plus utiles de la boîte à outils d'un administrateur système, et il est préinstallé sur chaque distribution. Contrairement à d'autres commandes telles que ps , il est interactif et vous pouvez parcourir la liste des processus, tuer un processus, etc.

Dans cet article, nous allons comprendre comment utiliser la commande top.

Contenu

  • 1 Premiers pas
  • 2 Comprendre l'interface de top :la zone de résumé

    • 2.1 Heure système, disponibilité et sessions utilisateur
    • 2.2 Utilisation de la mémoire
    • 2.3 Tâches
    • 2.4 Utilisation du processeur
    • Moyenne de charge de 2,5
  • 3 Comprendre l'interface de top :la zone de tâches
  • 4 meilleurs exemples d'utilisation de commandes

    • 4.1 Processus de mise à mort
    • 4.2 Trier la liste des processus
    • 4.3 Afficher une liste de threads au lieu de processus
    • 4.4 Affichage des chemins complets
    • 4.5 Vue forêt
    • 4.6 Liste des processus d'un utilisateur
    • 4.7 Filtrage des processus
    • 4.8 Modification de l'apparence par défaut des statistiques du processeur et de la mémoire
    • 4.9 Enregistrement de vos paramètres
  • 5 Conclusion

Démarrer

Comme vous l'avez peut-être déjà deviné, il vous suffit de saisir ceci pour lancer top :

top

Cela démarre une application de ligne de commande interactive, similaire à celle de la capture d'écran ci-dessous. La moitié supérieure de la sortie contient des statistiques sur les processus et l'utilisation des ressources, tandis que la moitié inférieure contient une liste des processus en cours d'exécution. Vous pouvez utiliser les touches fléchées et les touches Page Up/Down pour parcourir la liste. Si vous voulez quitter, appuyez simplement sur "q".

Il existe un certain nombre de variantes de top, mais dans le reste de cet article, nous parlerons de la variante la plus courante — celle qui vient avec le paquet « procps-ng ». Vous pouvez le vérifier en exécutant :

top -v

Si vous avez cette variante, cela apparaîtra dans la sortie, comme ceci :

procps-ng version 3.3.10

Il se passe pas mal de choses dans l'interface de top, nous allons donc les détailler petit à petit dans la section suivante.

Comprendre l'interface de top :la zone de résumé

Comme nous l'avons vu précédemment, la sortie de top est divisée en deux sections différentes. Dans cette partie de l'article, nous allons nous concentrer sur les éléments de la moitié de la sortie. Cette région est également appelée « zone de résumé ».

Heure système, disponibilité et sessions utilisateur

Tout en haut à gauche de l'écran (comme indiqué dans la capture d'écran ci-dessus), top affiche l'heure actuelle. Vient ensuite la disponibilité du système, qui nous indique la durée pendant laquelle le système a fonctionné. Par exemple, dans notre exemple, l'heure actuelle est "15:39:37", et le système a fonctionné pendant 90 jours, 15 heures et 26 minutes.

Vient ensuite le nombre de sessions utilisateur actives. Dans cet exemple, il y a deux sessions utilisateur actives. Ces sessions peuvent être effectuées sur un TTY (physiquement sur le système, via la ligne de commande ou un environnement de bureau) ou un PTY (comme une fenêtre d'émulateur de terminal ou via SSH). En fait, si vous vous connectez à un système Linux via un environnement de bureau, puis démarrez un émulateur de terminal, vous constaterez qu'il y aura deux sessions actives.

Si vous souhaitez obtenir plus de détails sur les sessions utilisateur actives, utilisez le who commande.

Utilisation de la mémoire



La section "mémoire" affiche des informations concernant l'utilisation de la mémoire du système. Les lignes marquées "Mem" et "Swap" affichent respectivement des informations sur la RAM et l'espace de swap. En termes simples, un espace de swap est une partie du disque dur qui est utilisée comme RAM. Lorsque l'utilisation de la RAM est presque pleine, les régions de la RAM peu utilisées sont écrites dans l'espace d'échange, prêtes à être récupérées ultérieurement en cas de besoin. Cependant, comme l'accès aux disques est lent, trop compter sur l'échange peut nuire aux performances du système.

Comme vous vous en doutez naturellement, les valeurs « total », « gratuit » et « utilisé » ont leur signification habituelle. La valeur « avail mem » correspond à la quantité de mémoire pouvant être allouée aux processus sans provoquer d'échanges supplémentaires.

Le noyau Linux essaie également de réduire les temps d'accès au disque de diverses manières. Il maintient un "cache disque" dans la RAM, où sont stockées les régions fréquemment utilisées du disque. De plus, les écritures sur disque sont stockées dans un «tampon de disque» et le noyau les écrit éventuellement sur le disque. La mémoire totale consommée par eux est la valeur "buff/cache". Cela peut sembler une mauvaise chose, mais ce n'est vraiment pas le cas :la mémoire utilisée par le cache sera allouée aux processus si nécessaire.

Tâches

La section "Tâches" affiche des statistiques concernant les processus en cours d'exécution sur votre système. La valeur "totale" est simplement le nombre total de processus. Par exemple, dans la capture d'écran ci-dessus, 27 processus sont en cours d'exécution. Pour comprendre le reste des valeurs, nous avons besoin d'un peu de contexte sur la façon dont le noyau Linux gère les processus.

Les processus effectuent un mélange de travail lié aux E/S (comme la lecture de disques) et de travail lié au processeur (comme l'exécution d'opérations arithmétiques). Le processeur est inactif lorsqu'un processus effectue des E/S, de sorte que les systèmes d'exploitation passent à l'exécution d'autres processus pendant ce temps. De plus, le système d'exploitation permet à un processus donné de s'exécuter pendant un très court laps de temps, puis il bascule vers un autre processus. C'est ainsi que les OS apparaissent comme s'ils étaient "multitâches". Pour faire tout cela, nous devons garder une trace de «l'état» d'un processus. Sous Linux, un processus peut se trouver dans l'un des états suivants :

  • Runnable (R) :un processus dans cet état est soit en cours d'exécution sur le CPU, soit il est présent dans la file d'attente d'exécution, prêt à être exécuté.
  • Veille interruptible (S) :les processus dans cet état attendent la fin d'un événement.
  • Veille sans interruption (D) :dans ce cas, un processus attend la fin d'une opération d'E/S.
  • Arrêté (T) :ces processus ont été arrêtés par un signal de contrôle de tâche (par exemple, en appuyant sur Ctrl + Z) ou parce qu'ils sont suivis.
  • Zombie (Z) :le noyau conserve diverses structures de données en mémoire pour suivre les processus. Un processus peut créer un certain nombre de processus enfants, et ils peuvent se terminer alors que le parent est toujours là. Cependant, ces structures de données doivent être conservées jusqu'à ce que le parent obtienne le statut des processus enfants. Ces processus terminés dont les structures de données sont toujours présentes sont appelés des zombies.

Les processus dans les états D et S sont affichés en « sommeil », et ceux dans l'état T sont affichés en « arrêté ». Le nombre de zombies est affiché sous la forme de la valeur "zombie".

Utilisation du processeur

La section Utilisation du CPU affiche le pourcentage de temps CPU consacré à diverses tâches. Le us La valeur est le temps que le CPU passe à exécuter des processus dans l'espace utilisateur. De même, le sy la valeur est le temps passé à exécuter les processus de l'espace noyau.

Linux utilise une valeur "nice" pour déterminer la priorité d'un processus. Un processus avec une valeur « agréable » élevée est « plus agréable » par rapport aux autres processus et obtient une faible priorité. De même, les processus avec un "gentil" inférieur ont une priorité plus élevée. Comme nous le verrons plus tard, la valeur par défaut "nice" peut être modifiée. Le temps passé à exécuter des processus avec un "nice" défini manuellement apparaît sous la forme ni valeur.

Ceci est suivi de id , qui est le temps pendant lequel le CPU reste inactif. La plupart des systèmes d'exploitation mettent le processeur en mode d'économie d'énergie lorsqu'il est inactif. Vient ensuite le wa valeur, qui est le temps que le CPU passe à attendre que les E/S se terminent.

Les interruptions sont des signaux au processeur concernant un événement qui nécessite une attention immédiate. Les interruptions matérielles sont généralement utilisées par les périphériques pour informer le système d'événements, tels qu'une pression sur une touche d'un clavier. D'autre part, des interruptions logicielles sont générées en raison d'instructions spécifiques exécutées sur le processeur. Dans les deux cas, le système d'exploitation les gère et le temps passé à gérer les interruptions matérielles et logicielles est donné par hi et si respectivement.

Dans un environnement virtualisé, une partie des ressources CPU est donnée à chaque machine virtuelle (VM). Le système d'exploitation détecte quand il a du travail à faire, mais il ne peut pas les exécuter car le processeur est occupé sur une autre machine virtuelle. Le temps perdu de cette manière est le temps de "vol", indiqué par st .

Moyenne de charge

La section moyenne de charge représente la « charge » moyenne sur une, cinq et quinze minutes. La « charge » est une mesure de la quantité de travail de calcul qu'un système effectue. Sous Linux, la charge est le nombre de processus dans les états R et D à un instant donné. La valeur "charge moyenne" vous donne une mesure relative du temps que vous devez attendre pour que les choses soient faites.



Prenons quelques exemples pour comprendre ce concept. Sur un système à cœur unique, une charge moyenne de 0,4 signifie que le système n'effectue que 40 % du travail qu'il peut effectuer. Une moyenne de charge de 1 signifie que le système est exactement à sa capacité - le système sera surchargé en ajoutant ne serait-ce qu'un peu de travail supplémentaire. Un système avec une moyenne de charge de 2,12 signifie qu'il est surchargé de 112 % de travail en plus qu'il ne peut en gérer.

Sur un système multicœur, vous devez d'abord diviser la charge moyenne par le nombre de cœurs de processeur pour obtenir une mesure similaire.

De plus, la "moyenne de charge" n'est pas vraiment la "moyenne" typique que la plupart d'entre nous connaissent. Il s'agit d'une "moyenne mobile exponentielle", ce qui signifie qu'une petite partie des moyennes de charge précédentes est prise en compte dans la valeur actuelle. Si vous êtes intéressé, cet article couvre tous les détails techniques.

Comprendre l'interface de top :la zone de tâches

La zone de résumé est relativement plus simple et contient une liste de processus. Dans cette section, nous découvrirons les différentes colonnes affichées dans la sortie par défaut de top.

  • PID

Il s'agit de l'ID de processus, un entier positif unique qui identifie un processus.

  • UTILISATEUR

Il s'agit du nom d'utilisateur « effectif » (qui correspond à un ID utilisateur) de l'utilisateur qui a lancé le processus. Linux attribue un ID utilisateur réel et un ID utilisateur effectif aux processus ; ce dernier permet à un processus d'agir au nom d'un autre utilisateur. (Par exemple, un utilisateur non root peut s'élever à root pour installer un package.)

  • RP et NI

Le champ "NI" indique la valeur "nice" d'un processus. Le champ "PR" indique la priorité de planification du processus du point de vue du noyau. La valeur nice affecte la priorité d'un processus.

  • VIRT, RES, SHR et %MEM

Ces trois champs sont liés à la consommation mémoire des processus. "VIRT" est la quantité totale de mémoire consommée par un processus. Cela inclut le code du programme, les données stockées par le processus en mémoire, ainsi que toutes les régions de mémoire qui ont été échangées sur le disque. "RES" est la mémoire consommée par le processus en RAM, et "%MEM" exprime cette valeur en pourcentage de la RAM totale disponible. Enfin, "SHR" est la quantité de mémoire partagée avec d'autres processus.

  • S

Comme nous l'avons vu précédemment, un processus peut être dans différents états. Ce champ affiche l'état du processus sous la forme d'une seule lettre.

  • TIME+

Il s'agit du temps CPU total utilisé par le processus depuis son démarrage, précis au centième de seconde.

  • COMMANDE

La colonne COMMAND affiche le nom des processus.

Principaux exemples d'utilisation des commandes

Jusqu'à présent, nous avons discuté de l'interface de top. Cependant, il peut également gérer les processus et vous pouvez contrôler divers aspects de la sortie de top. Dans cette section, nous allons prendre quelques exemples.

Dans la plupart des exemples ci-dessous, vous devez appuyer sur une touche pendant que top est en cours d'exécution. Gardez à l'esprit que ces touches sont sensibles à la casse. Ainsi, si vous appuyez sur "k" alors que le verrouillage des majuscules est activé, vous avez en fait appuyé sur "K", et la commande ne fonctionnera pas ou fera autre chose.

Tuer les processus

Si vous voulez tuer un processus, appuyez simplement sur 'k' lorsque top est en cours d'exécution. Cela fera apparaître une invite, qui demandera l'ID de processus du processus et appuyez sur Entrée.

Ensuite, entrez le signal à l'aide duquel le processus doit être tué. Si vous laissez ce champ vide, top utilise un SIGTERM, qui permet aux processus de se terminer correctement. Si vous voulez tuer un processus avec force, vous pouvez taper SIGKILL ici. Vous pouvez également saisir le numéro de signal ici. Par exemple, le nombre pour SIGTERM est 15 et SIGKILL est 9.

Si vous laissez l'ID de processus vide et que vous appuyez directement sur Entrée, cela mettra fin au processus le plus élevé de la liste. Comme nous l'avons mentionné précédemment, vous pouvez faire défiler à l'aide des touches fléchées et modifier le processus que vous souhaitez tuer de cette manière.

Trier la liste des processus

L'une des raisons les plus fréquentes d'utiliser un outil comme top est de savoir quel processus consomme le plus de ressources. Vous pouvez appuyer sur les touches suivantes pour trier la liste :

  • 'M' pour trier par utilisation de la mémoire
  • "P" pour trier par utilisation du processeur
  • ‘N’ pour trier par ID de processus
  • "T" pour trier par durée d'exécution

Par défaut, top affiche tous les résultats par ordre décroissant. Cependant, vous pouvez passer à l'ordre croissant en appuyant sur 'R'.

Vous pouvez également trier la liste avec le -o changer. Par exemple, si vous souhaitez trier les processus par utilisation du processeur, vous pouvez le faire avec :

top -o %CPU

Vous pouvez trier la liste selon n'importe lequel des attributs de la zone de résumé de la même manière.

Afficher une liste de threads au lieu de processus

Nous avons déjà abordé la façon dont Linux bascule entre les processus. Malheureusement, les processus ne partagent pas la mémoire ou d'autres ressources, ce qui rend ces commutateurs plutôt lents. Linux, comme de nombreux autres systèmes d'exploitation, prend en charge une alternative "légère", appelée "thread". Ils font partie d'un processus et partagent certaines régions de mémoire et d'autres ressources, mais ils peuvent être exécutés simultanément comme des processus.

Par défaut, top affiche une liste de processus dans sa sortie. Si vous souhaitez plutôt lister les discussions, appuyez sur "H" lorsque top est en cours d'exécution. Notez que la ligne "Tâches" indique "Threads" à la place et indique le nombre de threads au lieu de processus.

Vous avez peut-être remarqué qu'aucun des attributs de la liste de processus n'a changé. Comment est-ce possible, étant donné que les processus diffèrent des threads ? Dans le noyau Linux, les threads et les processus sont gérés à l'aide des mêmes structures de données. Ainsi, chaque thread a son propre ID, son état, etc.

Si vous souhaitez revenir à la vue du processus, appuyez à nouveau sur « H ». De plus, vous pouvez utiliser le -H basculer pour afficher les discussions par défaut.

top -H

Affichage des chemins complets

Par défaut, top n'affiche pas le chemin d'accès complet au programme ni ne fait de distinction entre les processus de l'espace noyau et les processus de l'espace utilisateur. Si vous avez besoin de ces informations, appuyez sur « c » pendant que top est en cours d'exécution. Appuyez à nouveau sur "c" pour revenir à la valeur par défaut.

Les processus de l'espace noyau sont marqués de crochets autour d'eux. Par exemple, dans la capture d'écran ci-dessus, il y a deux processus du noyau, kthreadd et khelper . Sur la plupart des installations Linux, il y en aura généralement quelques autres.

Alternativement, vous pouvez également commencer par le -c argument :

top -c

Vue sur la forêt

Parfois, vous souhaiterez peut-être voir la hiérarchie enfant-parent des processus. Vous pouvez le voir avec la vue de la forêt, en appuyant sur 'v'/'V' pendant que top est en cours d'exécution.

Comme vous pouvez le voir sur la capture d'écran ci-dessus, le systemd processus a été le premier à démarrer sur le système. Il a démarré des processus tels que sshd , qui à son tour a créé d'autres sshd processus, etc.

Répertorier les processus d'un utilisateur

Pour répertorier les processus d'un certain utilisateur, appuyez sur "u" lorsque top est en cours d'exécution. Saisissez ensuite le nom d'utilisateur ou laissez-le vide pour afficher les processus de tous les utilisateurs.

Alternativement, vous pouvez exécuter la commande top avec le -u changer. Dans cet exemple, nous avons répertorié tous les processus de l'utilisateur root.

top -u root

Filtrer les processus

Si vous avez beaucoup de processus avec lesquels travailler, un tri simple ne fonctionnera pas assez bien. Dans une telle situation, vous pouvez utiliser le filtrage de top pour vous concentrer sur quelques processus. Pour activer ce mode, appuyez sur ‘o’/’O’. Une invite apparaît en haut et vous pouvez saisir une expression de filtre ici.

Une expression de filtre est une instruction qui spécifie une relation entre un attribut et une valeur. Voici quelques exemples de filtres :

  • COMMAND=getty  :Filtrer les processus qui contiennent "getty" dans l'attribut COMMAND.
  • !COMMAND=getty  :filtrer les processus qui n'ont pas "getty" dans l'attribut COMMAND.
  • %CPU>3.0  :filtrer les processus dont l'utilisation du processeur est supérieure à 3 %.

Une fois que vous avez ajouté un filtre, vous pouvez encore réduire les choses en ajoutant plus de filtres. Pour effacer tous les filtres que vous avez ajoutés, appuyez sur '='.

Modification de l'apparence par défaut des statistiques du processeur et de la mémoire

Si vous êtes principalement chez vous dans un environnement graphique, vous n'aimerez peut-être pas la manière par défaut de top d'afficher les statistiques du processeur et de la mémoire. Vous pouvez appuyer sur 't' et 'm' pour changer le style des statistiques du processeur et de la mémoire. Voici une capture d'écran de top, où nous avons appuyé une fois sur "t" et "m".

Si vous appuyez sur 't' ou 'm' à plusieurs reprises, il passe en revue quatre vues différentes. Lors des deux premières pressions, il parcourt deux types différents de barres de progression. Si vous appuyez une troisième fois sur la touche, la barre de progression est masquée. Si vous appuyez à nouveau sur la touche, les compteurs textuels par défaut sont rétablis.

Enregistrer vos paramètres

Si vous avez apporté des modifications à la sortie de top, vous pouvez les enregistrer pour une utilisation ultérieure en appuyant sur "W". top écrit sa configuration dans le .toprc fichier dans votre répertoire personnel.

Conclusion

La commande top est extrêmement utile pour surveiller et gérer les processus sur un système Linux. Cet article ne fait qu'effleurer la surface, et il y a pas mal de choses que nous n'avons pas couvertes. Par exemple, il y a beaucoup plus de colonnes que vous pouvez ajouter en haut. Pour tout cela, assurez-vous de consulter la page de manuel en exécutant man top sur votre système.


Linux
  1. Un guide du terminal Linux pour les débutants

  2. Maîtrisez la commande Linux ls

  3. Commande Linux ps

  4. La commande locate sous Linux

  5. Un guide de la commande Linux "Rechercher"

La commande supérieure de Linux

Comment utiliser la commande fd sur le système Linux

Comment créer des fichiers dans le système Linux :Un guide ultime

Un guide pratique pour la commande chroot sous Linux

Un guide sur la commande atop sous Linux

La commande System Activity Reporter (sar) sous Linux