Plus facile à lire avec un fond crème, une teinte, plus de contraste ou un texte plus grand ? Choisissez vos couleurs et votre texte, une fois pour toutes les pages.

Leçon gratuite

Arrêter un programme proprement (signaux)

Après cette leçon: Je peux trouver un processus et l’arrêter de la bonne façon.

Leçon de 50 min15 commandesLab Linux du quotidien : la trentaine de commandes que les ingénieurs tapent de tête

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

MotCe que ça veut direExemple
Processusun programme qui tourne en ce moment
PIDle numéro qui désigne un processus4162
Signalun court message envoyé à un processusTERM
Premier planle seul processus qui a votre clavier
Arrière-planun processus qui tourne pendant que vous tapez autre chose
Tâcheun 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

Commande
ps

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.

Tous les processus, puis ceux du labo

Commande
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

Commande
pgrep -f lab-worker

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.

Exemple travaillé : une ligne de ps -ef

ColonneExempleSens
UIDstudentLe propriétaire du processus
PID4162Le numéro qui le désigne
PPID1Le PID de son parent
STIME17:59L’heure de départ
CMD/bin/bash /usr/local/bin/lab-workerLa 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éroNomEffet
15TERMDemande au processus de finir. C’est le choix par défaut
9KILLRetire le processus. Il ne peut pas l’ignorer
2INTCe qu’envoie Ctrl+C
1HUPVeut souvent dire : relis tes réglages

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

Quel nom porte le signal 15 ?

Commande
kill -l 15

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.

Et le signal 9 ?

Commande
kill -l 9

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.

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

Commande
pkill -f lab-worker

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.

Est-il encore là ?

Commande
pgrep -f lab-worker

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.

Demander la même chose au récalcitrant

Commande
pkill -f lab-stubborn

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.

Est-il encore là ?

Commande
pgrep -f lab-stubborn

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.

Le retirer avec le signal 9

Commande
pkill -9 -f lab-stubborn

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.

Et maintenant ?

Commande
pgrep -f lab-stubborn

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.

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

Commande
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

Commande
jobs

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.

Arrêter la tâche 1

Commande
kill %1

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.

Les trois plus gourmands, une fois

Commande
ps -eo pid,user,%cpu,%mem,cmd --sort=-%cpu | head -n 4

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.

À propos de ce labo et de sa source: Lab Linux du quotidien : la trentaine de commandes que les ingénieurs tapent de tête

Vous enseignez à une classe ? Proposez ce module à vos étudiants avec un guide de l'enseignant, des devoirs corrigés et un laboratoire pour chaque étudiant.