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

Trouver et arrêter un processus, démarrer un service

Après cette leçon: Je peux trouver et arrêter un processus, et démarrer ou arrêter un service.

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

Un programme se bloque : que faire ?

Un processus est un programme en train de tourner. Sur un serveur, des dizaines tournent en même temps, et certains se bloquent.

Un technicien doit savoir les trouver et les arrêter. Il doit aussi savoir démarrer un service, un programme qui tourne en permanence.

À la fin de cette leçon

Remarque

Je peux trouver et arrêter un processus, et démarrer ou arrêter un service.

Mots clés

MotCe que ça veut direExemple
Processusun programme en train de tourner
PIDle numéro qui identifie un processus4218
Signalun message envoyé à un processus
Serviceun programme qui tourne en permanence, démarré par le système
systemdle programme qui démarre et surveille les services

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

Avant de commencer

Remarque

Appuie sur Start the lab dans la barre en haut et attends que la machine soit prête. Ce lab fait tourner deux processus à arrêter, lab-worker et lab-stubborn, et un petit serveur web, lab-web.

Chaque processus a un numéro, le PID

Quand un programme démarre, le système crée un processus et lui donne un numéro, le PID. Deux processus peuvent avoir le même nom, mais jamais le même PID.

pgrep -f mot cherche les processus dont la commande contient ce mot. pgrep -c en donne le nombre. ps aux les liste tous, et top les montre en direct : on le quitte avec la touche q.

Compte les processus lab-worker

Commande
pgrep -c -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.

kill envoie un signal à un processus

Pour arrêter un processus, on lui envoie un signal avec kill suivi de son PID. Par défaut, le signal demande poliment de s'arrêter. Le programme peut l'accepter ou l'ignorer.

Le signal 9, écrit kill -9, ne se discute pas : le système arrête le programme tout de suite. On l'utilise en dernier.

Deux signaux à connaître

CommandeSignalEffet
kill 421815, par défautdemande de s'arrêter proprement
kill -9 42189arrête tout de suite, sans prévenir

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

Arrête lab-worker poliment

Commande
kill $(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.

Est-il encore là ?

Commande
pgrep -c -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.

Essaie la même chose sur lab-stubborn

Commande
kill $(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.

Est-il encore là ?

Commande
pgrep -c -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.

Arrête-le avec le signal 9

Commande
kill -9 $(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.

Vérifie qu'il a disparu

Commande
pgrep -c -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.

Une erreur fréquente

Attention

Beaucoup pensent que kill tue toujours le processus. Non : kill envoie une demande, et un programme peut l'ignorer. Vérifie avec pgrep. Utilise kill -9 seulement si la demande polie échoue, car le programme n'a plus le temps de sauvegarder.

Un service est géré par systemd

Un service est un programme que le système démarre avec la machine et garde en route. Un serveur web ou une base de données en sont. Le gestionnaire s'appelle systemd, et on le pilote avec systemctl.

sudo systemctl stop nom arrête un service et sudo systemctl start nom le démarre. systemctl is-active nom dit s'il tourne. sudo prête les droits de l'administrateur pour une commande.

Arrête le service lab-web

Commande
sudo systemctl stop lab-web

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.

Tourne-t-il encore ?

Commande
systemctl is-active lab-web

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.

Redémarre-le

Commande
sudo systemctl start lab-web

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.

Tourne-t-il de nouveau ?

Commande
systemctl is-active lab-web

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.