Le programme de caisse figé
Le programme de caisse d’un magasin se fige à l’heure de pointe. Le gérant ne veut pas qu’on redémarre tout le serveur : quarante autres programmes y tournent.
Il faut trouver ce programme précis, l’arrêter, et laisser les autres tranquilles.
À la fin de cette leçon
Remarque
Je peux trouver un processus et l’arrêter de la bonne façon.
Mots-clés
| Mot | Ce que ça veut dire | Exemple |
|---|---|---|
| Processus | un programme qui tourne en ce moment | |
| PID | le numéro qui désigne un processus | 4162 |
| Signal | un court message envoyé à un processus | TERM |
| Premier plan | le seul processus qui a votre clavier | |
| Arrière-plan | un processus qui tourne pendant que vous tapez autre chose | |
| Tâche | un processus que le shell a lancé et qu’il numérote | [1] |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Tout programme lancé est un processus
Quand vous lancez un programme, le système crée un processus. Ce processus reçoit un numéro, son PID.
Il a aussi un propriétaire, une heure de départ et un parent : le processus qui l’a lancé. Le premier processus lancé au démarrage a le PID 1 : sous Ubuntu, c’est systemd. Presque tous les autres en descendent.
Les processus de votre session
psAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Tous les processus, puis ceux du labo
ps -ef | grep lab-Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Seulement le PID du worker
pgrep -f lab-workerAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Exemple travaillé : une ligne de ps -ef
| Colonne | Exemple | Sens |
|---|---|---|
| UID | student | Le propriétaire du processus |
| PID | 4162 | Le numéro qui le désigne |
| PPID | 1 | Le PID de son parent |
| STIME | 17:59 | L’heure de départ |
| CMD | /bin/bash /usr/local/bin/lab-worker | La commande qui tourne |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Un signal demande à un processus de s’arrêter
On arrête un processus en lui envoyant un signal. kill 4162 envoie le signal 15, nommé TERM. Il demande au processus de finir. Un bon programme enregistre son travail et se termine.
kill -9 4162 envoie le signal 9, nommé KILL. Le système retire le processus aussitôt. Le programme n’a aucune chance de ranger ce qu’il faisait.
Quatre signaux à connaître
| Numéro | Nom | Effet |
|---|---|---|
| 15 | TERM | Demande au processus de finir. C’est le choix par défaut |
| 9 | KILL | Retire le processus. Il ne peut pas l’ignorer |
| 2 | INT | Ce qu’envoie Ctrl+C |
| 1 | HUP | Veut souvent dire : relis tes réglages |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Quel nom porte le signal 15 ?
kill -l 15Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Et le signal 9 ?
kill -l 9Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Arrêter les deux programmes du labo
Taper un PID à la main est lent, et un bouton Run ne peut pas connaître le vôtre. pkill -f nom trouve le processus par son nom et lui envoie un signal.
Le worker se termine sur une simple demande. Le récalcitrant l’ignore. Regardez ce que pgrep affiche après chaque étape. Rien d’affiché veut dire : aucun processus de ce nom.
Demander au worker de finir
pkill -f lab-workerAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Est-il encore là ?
pgrep -f lab-workerAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Demander la même chose au récalcitrant
pkill -f lab-stubbornAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Est-il encore là ?
pgrep -f lab-stubbornAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Le retirer avec le signal 9
pkill -9 -f lab-stubbornAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Et maintenant ?
pgrep -f lab-stubbornAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Erreur fréquente
Attention
Beaucoup de gens pensent que kill -9 est un kill plus fort, donc ils l’utilisent en premier. kill laisse le programme enregistrer et ranger. kill -9 ne lui laisse aucune chance et peut laisser un fichier à moitié écrit. Envoyez TERM, attendez quelques secondes, et gardez le 9 pour un processus qui refuse de s’arrêter.
Premier plan, arrière-plan et top
Un programme que vous lancez tourne au premier plan. Il garde votre clavier jusqu’à sa fin. Ctrl+C lui envoie le signal 2 et l’arrête le plus souvent.
Terminez une commande par & et elle tourne en arrière-plan. Le shell la range parmi les tâches et la numérote : [1].
Tapez top pour voir en direct les processus les plus gourmands. Appuyez sur q pour quitter. Un Run ne peut pas appuyer sur q : tapez celle-ci vous-même.
Lancer une attente de cinq minutes en fond
sleep 300 &Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Lister vos tâches
jobsAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Arrêter la tâche 1
kill %1Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Les trois plus gourmands, une fois
ps -eo pid,user,%cpu,%mem,cmd --sort=-%cpu | head -n 4Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.