Affichage des processus Linux

LinuxLinuxBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

La gestion des processus est un aspect fondamental de l'administration des systèmes Linux. Chaque programme ou commande que vous exécutez sous Linux crée un processus, et la surveillance de ces processus est essentielle pour maintenir les performances du système et résoudre les problèmes.

Ce laboratoire (LabEx) vous guidera dans la maîtrise de la commande ps, un outil puissant pour surveiller et gérer les processus en cours d'exécution sur un système Linux. En comprenant comment utiliser la commande ps et ses diverses options, vous aurez des informations précieuses sur ce qui se passe sur votre système à tout moment.

Au cours de ce laboratoire, vous apprendrez à afficher les processus dans différents formats, à afficher tous les processus du système et à comprendre les informations détaillées que ps peut fournir sur chaque processus.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicSystemCommandsGroup(["Basic System Commands"]) linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/TextProcessingGroup(["Text Processing"]) linux(("Linux")) -.-> linux/SystemInformationandMonitoringGroup(["System Information and Monitoring"]) linux/BasicSystemCommandsGroup -.-> linux/echo("Text Display") linux/BasicFileOperationsGroup -.-> linux/wc("Text Counting") linux/TextProcessingGroup -.-> linux/grep("Pattern Searching") linux/SystemInformationandMonitoringGroup -.-> linux/watch("Command Repeating") linux/SystemInformationandMonitoringGroup -.-> linux/ps("Process Displaying") linux/SystemInformationandMonitoringGroup -.-> linux/top("Task Displaying") subgraph Lab Skills linux/echo -.-> lab-271363{{"Affichage des processus Linux"}} linux/wc -.-> lab-271363{{"Affichage des processus Linux"}} linux/grep -.-> lab-271363{{"Affichage des processus Linux"}} linux/watch -.-> lab-271363{{"Affichage des processus Linux"}} linux/ps -.-> lab-271363{{"Affichage des processus Linux"}} linux/top -.-> lab-271363{{"Affichage des processus Linux"}} end

Comprendre les informations de base sur les processus

Sous Linux, chaque programme ou commande en cours d'exécution est représenté par un processus. Chaque processus a un identifiant unique appelé Process ID (PID). La commande ps vous permet de visualiser ces processus et d'obtenir des informations sur eux.

Commençons par explorer l'utilisation de base de la commande ps.

Commande ps de base

  1. Ouvrez votre terminal dans l'environnement LabEx. Vous devriez commencer dans le répertoire ~/project.

  2. Tapez la commande suivante et appuyez sur Entrée :

ps
  1. Vous verrez une sortie similaire à :
  PID TTY          TIME CMD
  188 pts/0    00:00:00 zsh
  449 pts/0    00:00:00 ps

Comprenons ce que cette sortie signifie :

  • PID : Process ID, un numéro unique attribué à chaque processus
  • TTY : Type de terminal, indiquant sur quel terminal le processus s'exécute
  • TIME : La quantité de temps CPU utilisée par le processus
  • CMD : La commande qui a lancé le processus

Dans cet exemple, vous pouvez voir :

  • Le processus du shell zsh (votre session de terminal actuelle)
  • La commande ps que vous venez d'exécuter

La commande ps par défaut n'affiche que les processus associés à votre session actuelle. Cela est utile pour vérifier rapidement quelles commandes vous avez récemment exécutées, mais cela ne vous donne pas une vue d'ensemble de ce qui se passe sur votre système.

Essayez d'exécuter une autre commande, puis exécutez à nouveau ps pour voir comment la sortie change :

echo "Hello, world"
ps

Vous remarquerez que la commande echo n'apparaît pas dans la liste des processus. C'est parce qu'elle a démarré et s'est terminée si rapidement qu'elle n'était plus en cours d'exécution au moment où vous avez exécuté la commande ps.

Afficher tous les processus du système

Dans l'étape précédente, vous avez appris que la commande ps de base n'affiche que les processus liés à votre terminal actuel. Cependant, un système Linux typique a de nombreux processus en cours d'exécution simultanément, dont la plupart ne sont pas directement liés à votre session de terminal.

Pour avoir une vue plus complète de ce qui se passe sur votre système, vous pouvez utiliser l'option -e avec la commande ps.

Utilisation de ps -e pour afficher tous les processus

  1. Dans votre terminal, tapez la commande suivante et appuyez sur Entrée :
ps -e
  1. Vous verrez une liste de processus beaucoup plus longue, similaire à :
  PID TTY          TIME CMD
    1 ?        00:00:00 init.sh
   22 ?        00:00:00 supervisord
   23 ?        00:00:00 sshd
   32 ?        00:00:00 dbus-daemon
   35 ?        00:00:00 xfce4-session
   ···

Cette sortie affiche tous les processus en cours d'exécution sur le système, pas seulement ceux associés à votre terminal. Remarquez que de nombreux processus ont un ? dans la colonne TTY. Cela indique que ces processus ne sont associés à aucun terminal.

Comprendre les processus du système

Beaucoup des processus que vous voyez sont des services système s'exécutant en arrière-plan. Par exemple :

  • init.sh (PID 1) est le premier processus lancé lorsque le système démarre
  • supervisord est un système de contrôle de processus
  • sshd est le démon du serveur SSH
  • dbus-daemon est le démon du bus de messages D-Bus
  • xfce4-session fait partie de l'environnement de bureau Xfce

Ces processus gèrent diverses fonctions système et fournissent les services qui rendent votre système Linux utilisable.

Compter le nombre de processus

Si vous voulez savoir combien de processus sont actuellement en cours d'exécution sur votre système, vous pouvez rediriger la sortie de ps -e vers la commande wc :

ps -e | wc -l

Le nombre affiché représente le nombre total de processus en cours d'exécution sur votre système, plus une ligne pour l'en-tête.

Afficher des informations détaillées sur les processus

Maintenant que vous pouvez afficher tous les processus en cours d'exécution sur votre système, apprenons à obtenir des informations plus détaillées sur chaque processus. L'option -f de la commande ps fournit une liste au "format complet" avec des détails supplémentaires.

Utilisation de ps -ef pour obtenir des informations détaillées

  1. Dans votre terminal, tapez la commande suivante et appuyez sur Entrée :
ps -ef
  1. Vous verrez une sortie similaire à :
UID          PID    PPID  C STIME TTY          TIME CMD
root           1       0  0 16:45 ?        00:00:00 /bin/bash /etc/shiyanlou/sbin/init.sh
root          22       1  0 16:45 ?        00:00:00 /usr/bin/python3 /usr/bin/supervisord -n
root          23      22  0 16:45 ?        00:00:00 sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups
labex        188     187  0 16:46 pts/0    00:00:00 -zsh
labex        677     188  0 16:55 pts/0    00:00:00 ps -ef

Ce format fournit des informations beaucoup plus détaillées sur chaque processus :

  • UID : Identifiant de l'utilisateur propriétaire du processus
  • PID : Identifiant du processus
  • PPID : Identifiant du processus parent (le processus qui a lancé celui-ci)
  • C : Utilisation du CPU
  • STIME : Heure de démarrage du processus
  • TTY : Terminal associé au processus
  • TIME : Temps CPU utilisé par le processus
  • CMD : Commande complète avec ses arguments

Comprendre les relations entre les processus

La colonne PPID est particulièrement utile pour comprendre comment les processus sont liés les uns aux autres. Chaque processus (sauf le tout premier) est lancé par un autre processus, créant une relation de parent-enfant.

Par exemple, dans la sortie ci-dessus :

  • Le processus avec le PID 1 (init.sh) a un PPID de 0 (c'est le premier processus)
  • Le processus avec le PID 22 (supervisord) a un PPID de 1 (il a été lancé par init.sh)
  • Le processus avec le PID 23 (sshd) a un PPID de 22 (il a été lancé par supervisord)

Cette relation hiérarchique forme un "arbre de processus", que vous pouvez visualiser avec des outils spécialisés comme pstree (non couvert dans ce lab).

Filtrer les informations sur les processus

Vous pouvez combiner ps avec grep pour filtrer des processus spécifiques. Par exemple, pour trouver tous les processus liés au shell zsh :

ps -ef | grep zsh

Cela vous montrera tous les processus dont le nom de commande contient "zsh".

Essayez de rechercher d'autres processus sur votre système :

ps -ef | grep bash

Cette combinaison de ps avec des outils de filtrage en fait une commande puissante pour la surveillance et la résolution de problèmes du système.

Tri des informations sur les processus et options avancées

Maintenant que vous avez appris les bases sur les informations sur les processus et les listes détaillées, explorons quelques options supplémentaires qui rendent la commande ps encore plus utile.

Format personnalisé avec ps

La commande ps vous permet de créer des sorties personnalisées avec des informations spécifiques qui vous intéressent. L'option -o vous permet de spécifier les colonnes à afficher :

ps -eo pid,ppid,cmd,%cpu,%mem --sort=-%cpu

Cette commande affiche :

  • Identifiant du processus (pid)
  • Identifiant du processus parent (ppid)
  • Commande (cmd)
  • Pourcentage d'utilisation du CPU (%cpu)
  • Pourcentage d'utilisation de la mémoire (%mem)

Le paramètre --sort=-%cpu trie les processus par utilisation du CPU en ordre décroissant (le signe moins avant %cpu indique l'ordre décroissant).

Vous devriez voir une sortie similaire à :

  PID  PPID CMD                         %CPU %MEM
  789   788 ps -eo pid,ppid,cmd,%cpu,%  0.0  0.1
  188   187 -zsh                        0.0  0.1
   35    34 xfce4-session               0.0  0.2
   32     1 /usr/bin/dbus-daemon --sys  0.0  0.0
   23    22 sshd: /usr/sbin/sshd -D [l  0.0  0.1
   22     1 /usr/bin/python3 /usr/bin/  0.0  0.2
    1     0 /bin/bash /etc/shiyanlou/s  0.0  0.0

Recherche des processus gourmands en mémoire

Si vous voulez identifier quels processus utilisent le plus de mémoire, vous pouvez trier par utilisation de la mémoire à la place :

ps -eo pid,user,cmd,%mem --sort=-%mem | head -n 6

Cette commande affiche les 5 processus consommateurs de mémoire les plus importants (plus la ligne d'en-tête) avec leur PID, utilisateur, commande et pourcentage d'utilisation de la mémoire.

Comprendre les états des processus

Les processus peuvent être dans différents états. Voyons ces informations :

ps -eo pid,stat,cmd

La colonne STAT montre l'état du processus à l'aide de codes à une lettre :

  • R : En cours d'exécution ou prêt à être exécuté
  • S : En attente interruptible (en sommeil)
  • D : Sommeil ininterrompable (généralement pour les E/S)
  • Z : Processus zombie
  • T : Arrêté ou en cours de suivi

Des caractères supplémentaires peuvent apparaître après la lettre d'état :

  • < : Priorité élevée
  • N : Priorité basse
  • s : Chef de session
  • + : Dans le groupe de processus au premier plan

Ces informations aident à comprendre ce que les processus font à tout moment.

Vue hiérarchique avec pstree

Bien que ne faisant pas partie de la commande ps elle-même, la commande pstree fournit une représentation visuelle de la hiérarchie des processus :

pstree

Cela montre les relations entre les processus sous forme d'arbre, facilitant la compréhension de la manière dont les processus sont liés les uns aux autres.

Surveillance en temps réel des processus

Alors que la commande ps fournit un instantané des processus à un moment donné, il peut arriver que vous ayez besoin de surveiller les processus en continu. Dans cette étape, nous allons explorer des outils de surveillance en temps réel des processus.

Utilisation de la commande top

La commande top offre une vue dynamique en temps réel du système en cours d'exécution. Elle affiche des informations sommaires sur le système ainsi qu'une liste des processus ou des threads actuellement gérés par le noyau Linux.

Exécutez la commande suivante :

top

Vous verrez quelque chose comme :

top - 17:15:23 up 30 min,  1 user,  load average: 0.00, 0.01, 0.05
Tasks:  31 total,   1 running,  30 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.3 sy,  0.0 ni, 99.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
MiB Mem :   1975.1 total,   1558.7 free,    180.4 used,    236.1 buff/cache
MiB Swap:    975.0 total,    975.0 free,      0.0 used.   1651.3 avail Mem

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
    1 root      20   0    8988   3208   2556 S   0.0   0.2   0:00.07 init.sh
   22 root      20   0   39528   8596   6088 S   0.0   0.4   0:00.20 supervisord
   23 root      20   0   12128   6788   5864 S   0.0   0.3   0:00.00 sshd
   ...

La sortie est divisée en deux parties :

  1. Sommaire du système (5 premières lignes)
  2. Liste des processus (triée par utilisation du CPU par défaut)

Pour quitter top, appuyez sur la touche q.

Comprendre la sortie de top

Le sommaire du système fournit :

  • Le temps de fonctionnement et les moyennes de charge
  • Le nombre de tâches par état (en cours d'exécution, en sommeil, arrêtées, zombies)
  • La répartition de l'utilisation du CPU
  • L'utilisation de la mémoire et de l'échange

La liste des processus montre :

  • PID : Identifiant du processus
  • USER : Utilisateur propriétaire
  • PR : Priorité
  • NI : Valeur de nice
  • VIRT : Mémoire virtuelle utilisée
  • RES : Mémoire résidente utilisée
  • SHR : Mémoire partagée
  • S : État du processus
  • %CPU : Utilisation du CPU
  • %MEM : Utilisation de la mémoire
  • TIME+ : Temps CPU utilisé
  • COMMAND : Nom de la commande

Commandes interactives dans top

Pendant que top est en cours d'exécution, vous pouvez utiliser diverses commandes au clavier pour interagir avec elle :

  • Appuyez sur M pour trier par utilisation de la mémoire
  • Appuyez sur P pour trier par utilisation du CPU
  • Appuyez sur k suivi d'un PID pour tuer un processus
  • Appuyez sur h pour obtenir de l'aide

Essayez d'appuyer sur M pendant que top est en cours d'exécution pour voir les processus triés par utilisation de la mémoire.

Utilisation de la commande watch avec ps

Une autre approche pour la surveillance en temps réel consiste à utiliser la commande watch avec ps. Cela exécute une commande périodiquement et affiche la sortie, vous permettant de voir les changements au fil du temps.

watch -n 1 'ps -eo pid,ppid,cmd,%cpu,%mem --sort=-%cpu | head -n 6'

Cela se rafraîchit toutes les 1 secondes et montre les 5 processus consommateurs de CPU les plus importants.

Pour quitter watch, appuyez sur Ctrl+C.

La combinaison de ps avec des utilitaires comme watch vous offre des capacités puissantes pour surveiller en temps réel les processus de votre système.

Résumé

Au cours de ce laboratoire, vous avez appris les compétences essentielles pour surveiller et gérer les processus dans un système Linux en utilisant la commande ps et les outils associés. Voici un récapitulatif de ce que vous avez couvert :

  1. Informations de base sur les processus : Vous avez appris à utiliser la commande de base ps pour afficher les processus associés à votre session de terminal actuelle, en comprenant le format de sortie de base, y compris le PID, le TTY, le TIME et la CMD.

  2. Affichage des processus système : Vous avez maîtrisé l'utilisation de ps -e pour afficher tous les processus en cours d'exécution sur le système, pas seulement ceux associés à votre terminal.

  3. Informations détaillées sur les processus : Vous avez exploré la commande ps -ef pour obtenir des informations détaillées sur les processus, y compris les identifiants d'utilisateur, les identifiants de processus parent, les heures de démarrage et les lignes de commande complètes.

  4. Tri et formatage avancés : Vous avez découvert comment créer des sorties personnalisées avec des colonnes spécifiques et des options de tri en utilisant ps -eo et le paramètre --sort.

  5. Surveillance en temps réel : Vous avez appris à utiliser la commande top pour afficher les processus en temps réel de manière dynamique et à combiner ps avec d'autres utilitaires comme watch pour une surveillance continue.

Ces compétences sont fondamentales pour l'administration système, la résolution de problèmes et la surveillance des performances dans les environnements Linux. Comprendre quels processus sont en cours d'exécution et comment ils consomment les ressources système est essentiel pour maintenir la santé du système et diagnostiquer les problèmes.

Au fur et à mesure que vous continuerez à travailler avec les systèmes Linux, la capacité à surveiller et à gérer efficacement les processus sera l'une de vos compétences les plus précieuses.