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.
6.1.2 Foreground et background
Le cours distingue deux situations :
| Mode | Principe | Consé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.
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
| Besoin | Repère théorique |
|---|---|
| Lancer normalement | commande → premier plan |
| Lancer sans bloquer le terminal | commande & |
| Suspendre un processus au premier plan | Ctrl+Z |
| Reprendre au premier plan | fg |
| Reprendre à l’arrière-plan | bg |
| Observer les processus | htop ou ps ux |
| Trouver un processus par son nom/sa commande | pgrep |
| Consulter un PID précis | ps -p PID |
| Demander l’arrêt d’un processus | kill PID |