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.
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
Ouvrez votre terminal dans l'environnement LabEx. Vous devriez commencer dans le répertoire
~/project.Tapez la commande suivante et appuyez sur Entrée :
ps
- 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 processusTTY: Type de terminal, indiquant sur quel terminal le processus s'exécuteTIME: La quantité de temps CPU utilisée par le processusCMD: 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
psque 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.
Affichage de tous les processus 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
- Dans votre terminal, tapez la commande suivante et appuyez sur Entrée :
ps -e
- 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émarresupervisordest un système de contrôle de processussshdest le démon du serveur SSHdbus-daemonest le démon du bus de messages D-Busxfce4-sessionfait 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.
Affichage 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
- Dans votre terminal, tapez la commande suivante et appuyez sur Entrée :
ps -ef
- 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 processusPID: Identifiant du processusPPID: Identifiant du processus parent (le processus qui a lancé celui-ci)C: Utilisation du CPUSTIME: Heure de démarrage du processusTTY: Terminal associé au processusTIME: Temps CPU utilisé par le processusCMD: 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 zombieT: Arrêté ou en cours de suivi
Des caractères supplémentaires peuvent apparaître après la lettre d'état :
<: Priorité élevéeN: Priorité basses: 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 :
- Sommaire du système (5 premières lignes)
- 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
Mpour trier par utilisation de la mémoire - Appuyez sur
Ppour trier par utilisation du CPU - Appuyez sur
ksuivi d'un PID pour tuer un processus - Appuyez sur
hpour 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 :
Informations de base sur les processus : Vous avez appris à utiliser la commande de base
pspour 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.Affichage des processus système : Vous avez maîtrisé l'utilisation de
ps -epour afficher tous les processus en cours d'exécution sur le système, pas seulement ceux associés à votre terminal.Informations détaillées sur les processus : Vous avez exploré la commande
ps -efpour 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.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 -eoet le paramètre--sort.Surveillance en temps réel : Vous avez appris à utiliser la commande
toppour afficher les processus en temps réel de manière dynamique et à combinerpsavec d'autres utilitaires commewatchpour 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.



