Comprendre les états et le cycle de vie des processus avec ps et top
Dans cette étape, vous apprendrez les états des processus Linux et leur cycle de vie. Comprendre les états des processus est crucial pour surveiller et gérer efficacement les ressources système. Vous utiliserez les commandes ps et top pour observer les processus et leurs états.
Chaque processus dans Linux possède un état qui décrit son activité actuelle. Ces états sont définis par le noyau et indiquent si un processus est en cours d'exécution, en veille, arrêté ou dans d'autres conditions.
Commençons par examiner les états des processus à l'aide de la commande ps. La commande ps fournit une capture instantanée des processus en cours.
Tout d'abord, ouvrez votre terminal. Vous pouvez le faire en cliquant sur l'icône du terminal sur le bureau ou en appuyant sur Ctrl+Alt+T. Votre répertoire de travail par défaut est ~/project.
Pour voir tous les processus en cours d'exécution sur votre système, y compris ceux sans terminal de contrôle, utilisez la commande ps aux. Les options aux affichent les processus appartenant à tous les utilisateurs (a), les processus sans terminal de contrôle (x), et présentent un format orienté utilisateur (u).
ps aux
Vous verrez une longue liste de processus. Faites attention à la colonne STAT, qui indique l'état de chaque processus. Les états courants que vous pourriez observer incluent :
R : En cours d'exécution ou exécutable (sur le processeur ou en attente d'exécution)
S : Sommeil interruptible (en attente d'un événement à terminer)
D : Sommeil non interruptible (en attente d'E/S, ne peut pas être interrompu)
T : Arrêté (suspendu par un signal)
Z : Zombi (processus terminé, mais le processus parent n'a pas récupéré son statut de sortie)
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.2 171820 16140 ? Ss HH:MM 0:01 /usr/lib/systemd/systemd ...
root 2 0.0 0.0 0 0 ? S HH:MM 0:00 [kthreadd]
labex 3448 0.0 0.2 266904 3836 pts/0 R+ HH:MM 0:00 ps aux
...sortie omise...
Ensuite, utilisons la commande ps -ef. Cette commande fournit une liste complète (f) de tous les processus (e), affichant plus de détails comme l'ID du processus parent (PPID), l'utilisation du processeur (C), l'heure de démarrage (STIME) et la commande (CMD).
ps -ef
Cette sortie est souvent utilisée pour voir les relations parent-enfant entre les processus, bien qu'elle n'affiche pas explicitement une structure arborescente.
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 HH:MM ? 00:00:01 /usr/lib/systemd/systemd ...
root 2 0 0 HH:MM ? 00:00:00 [kthreadd]
root 3 2 0 HH:MM ? 00:00:00 [rcu_gp]
...sortie omise...
Pour visualiser la hiérarchie des processus, vous pouvez utiliser l'option ps --forest. Cela affiche les processus sous forme d'arbre, ce qui facilite la compréhension de la façon dont les processus ont été créés.
ps --forest
Cette commande est particulièrement utile pour le débogage et la compréhension de la structure des différents services et applications sur votre système.
PID TTY TIME CMD
2768 pts/0 00:00:00 bash
5947 pts/0 00:00:00 \_ sleep 10000
6377 pts/0 00:00:00 \_ ps --forest
...sortie omise...
Maintenant, explorons la commande top, qui fournit une vue dynamique en temps réel d'un système en cours d'exécution. Elle affiche un résumé des informations système et une liste des processus ou threads actuellement gérés par le noyau Linux.
Exécutez la commande top :
top
Vous verrez une affichage interactif. La partie supérieure fournit des informations de résumé système, y compris le temps de fonctionnement, la charge moyenne, le résumé des tâches, les statistiques du processeur et l'utilisation de la mémoire. La partie inférieure liste les processus individuels, triés par défaut par utilisation du processeur.
Dans la sortie top, observez la colonne S pour les états des processus, similaire à ps. Vous pouvez également voir %CPU (pourcentage d'utilisation du processeur) et %MEM (pourcentage d'utilisation de la mémoire) pour chaque processus.
top - HH:MM:SS up DD min, X users, load average: X.XX, X.XX, X.XX
Tasks: XXX total, X running, XXX sleeping, X stopped, X zombie
%Cpu(s): X.X us, X.X sy, X.X ni, XX.X id, X.X wa, X.X hi, X.X si, X.X st
MiB Mem : XXXX.X total, XXXX.X free, XXX.X used, XXX.X buff/cache
MiB Swap: XXXX.X total, XXXX.X free, X.X used. XXXX.X avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
XXXX labex 20 0 XXXXXX XXXX XXXX R X.X X.X 0:00.0X top
...sortie omise...
Pendant que top est en cours d'exécution, vous pouvez appuyer sur q pour quitter et revenir à votre invite de terminal.
La compréhension de ces commandes et des informations qu'elles fournissent est fondamentale pour la surveillance et le dépannage des processus sur un système Linux.