Linux & Bash · Chapitre 6

6. Processus

Jusqu’ici, nous avons surtout observé les commandes comme des actions : nous lançons ls, un script Bash ou un programme, puis nous récupérons un résultat. Linux, lui, doit réellement faire tourner ces programmes. Une instance de programme en cours d’exécution est appelée un processus.

Fil conducteur : lancer un programme → comprendre qu’il devient un processus → choisir premier plan ou arrière-plan → suspendre et reprendre son exécution → identifier le processus → l’arrêter.

6.1 Du programme au processus

6.1.1 Qu’est-ce qu’un processus ?

Un programme est du code disponible sur la machine. Lorsqu’on l’exécute, Linux crée une instance en cours d’exécution : le processus.

Ainsi, une application, un script Bash ou même une commande comme ls provoque l’exécution d’un processus. Plusieurs processus peuvent fonctionner simultanément sur une machine Linux.

Idée clé : le programme est ce que l’on peut lancer ; le processus est l’exécution concrète de ce programme à un instant donné.

6.1.2 Foreground et background

Le cours distingue deux situations :

ModePrincipeConséquence dans le terminal
Foreground (premier plan)Le processus occupe le terminal et interagit directement avec l’utilisateur.Le shell attend sa fin avant de rendre la main.
Background (arrière-plan)Le processus continue de fonctionner sans monopoliser le terminal.On peut continuer à saisir d’autres commandes.

Cette distinction devient importante lorsqu’une tâche dure plusieurs minutes ou plusieurs heures.

6.2 Premier plan et arrière-plan

6.2.1 Fonctionnement au premier plan

Une commande lancée normalement depuis le terminal s’exécute au premier plan. Tant qu’elle n’est pas terminée, le shell ne nous rend pas son prompt.

python3 webscraping.py

Si le script dure vingt minutes, le terminal reste donc occupé pendant vingt minutes.

6.2.2 Fonctionnement en arrière-plan avec &

Si nous savons dès le départ que le programme doit continuer à tourner sans bloquer le terminal, nous pouvons ajouter & à la fin de la commande :

python3 webscraping.py &

Le processus est alors lancé en arrière-plan et le shell nous rend immédiatement la main.

6.3 Suspendre, reprendre et déplacer un processus

6.3.1 Suspendre avec Ctrl+Z

Si un processus est déjà en cours au premier plan et monopolise le terminal, Ctrl+Z permet de le suspendre.

[1]+  Stopped                 python3 webscraping.py

Le processus n’est pas terminé : son exécution est mise en pause. Le terminal, lui, redevient disponible.

6.3.2 Reprendre au premier plan avec fg

La commande fg reprend un processus suspendu et le replace au premier plan :

fg

Le processus recommence à s’exécuter et occupe de nouveau le terminal.

6.3.3 Reprendre à l’arrière-plan avec bg

Après avoir suspendu un processus avec Ctrl+Z, la commande bg permet de reprendre son exécution en arrière-plan :

bg

Le processus continue alors son travail, mais le terminal reste utilisable.

Chemin à retenir : processus au premier plan → Ctrl+Z le suspend → fg le reprend au premier plan ou bg le reprend à l’arrière-plan. Si l’on veut l’arrière-plan dès le lancement, on ajoute &.

6.4 Observer les processus en cours

6.4.1 htop : vue interactive

htop affiche de manière interactive les processus présents sur la machine. Il permet de constater qu’un système Linux exécute de nombreux processus même lorsque nous ne les avons pas lancés nous-mêmes.

htop

Si l’outil n’est pas installé :

La documentation est disponible avec man htop et la touche q permet de quitter l’affichage.

6.4.2 ps : obtenir un état des processus

ps signifie Process Status. Contrairement à l’affichage interactif de htop, la commande produit un état des processus au moment où elle est exécutée.

Une forme courante est :

ps ux

Cette commande permet notamment d’observer les processus exécutés sous l’utilisateur courant et les informations qui leur sont associées.

6.5 Identifier précisément un processus avec son PID

6.5.1 Le PID : Process ID

Chaque processus possède un identifiant appelé PID (Process ID). Cet identifiant permet de désigner précisément une exécution particulière.

Si nous connaissons déjà le PID, nous pouvons demander à ps les informations de ce seul processus :

ps -p PID

6.5.2 Retrouver un PID avec pgrep

pgrep recherche des processus et renvoie leur PID. Pour le script de l’exemple, le cours utilise la recherche sur la ligne de commande complète :

pgrep -f "python3 webscraping.py"

L’option -f permet ici de faire correspondre la ligne de commande complète.

6.6 Mettre fin à un processus avec kill

6.6.1 Arrêter un processus identifié

Une fois le PID connu, la commande kill permet de demander l’arrêt du processus concerné :

kill PID

Le PID joue donc le rôle d’identifiant permettant à Linux de savoir exactement à quel processus nous voulons nous adresser.

6.7 Synthèse : repères de gestion des processus

BesoinRepère théorique
Lancer normalementcommande → premier plan
Lancer sans bloquer le terminalcommande &
Suspendre un processus au premier planCtrl+Z
Reprendre au premier planfg
Reprendre à l’arrière-planbg
Observer les processushtop ou ps ux
Trouver un processus par son nom/sa commandepgrep
Consulter un PID précisps -p PID
Demander l’arrêt d’un processuskill PID
Importance pour un DevOps : serveurs, scripts d’automatisation et outils tournent sous forme de processus. Savoir déterminer ce qui tourne, retrouver son PID, laisser une tâche fonctionner en arrière-plan et arrêter un processus fait partie des bases du diagnostic et de l’administration Linux.