Apprenez en lisant dans l'ordre

Vérifier et arrêter les processus — ps / kill

Apprends à lister les processus en cours avec ps, à connaître ton propre PID avec $$, et à arrêter avec kill un processus envoyé en arrière-plan avec & — tout en pratique dans un terminal en navigateur.

Voir les processus en cours — ps

Un processus, c'est chaque programme en cours d'exécution.

ps est la commande qui liste les processus tournant en ce moment.

Chaque processus reçoit un numéro unique appelé PID (process ID), qui sert de repère pour l'arrêter plus tard.

Quand la liste est longue, dirige-la vers grep, comme ps | grep sleep, pour filtrer les processus par nom.

Ce qu'est un processus — une instance d'un programme en cours
programmeshprogrammesleepprogrammeviprocessusshprocessussleepprocessusviPID 101PID 142PID 188
Lancer un programme en fait un « processus », et chacun reçoit un PID unique. ps liste ces processus en cours.
CommandeSignification
psLister les processus en cours avec leur PID
ps | grep nameFiltrer les processus par nom
echo $$Afficher le PID du shell actuel lui-même
cmd &Lancer une commande en arrière-plan

Tu peux extraire le PID du shell lui-même avec la variable spéciale $$.

$$ est une variable spéciale que le shell remplit avec son propre PID.

Lancer echo $$ affiche le numéro du shell dans lequel tu tapes, et tu retrouveras ce même numéro dans la liste ps.

Lire le processus actuel avec ps et $$
psliste les processusavec leur PIDecho $$affiche le PIDdu shell actuel
ps liste les PID des processus en cours ; echo $$ affiche le PID du shell actuel.
ps          # liste des processus en cours (avec leur PID)
echo $$     # le PID propre de ce shell
ps -ef      # une liste plus détaillée (le format varie selon l'environnement)

① Lance ps pour afficher la liste des processus actuellement en cours.

② Lance echo $$ pour afficher le PID (numéro) du shell même dans lequel tu tapes.

③ Relance ps et confirme visuellement que le numéro de l'étape ② apparaît dans la liste. (Lance-le correctement et une explication apparaîtra.)

Linux console
0 / 2 exécutée(s)
Loading Linux Terminal...

Exécution en arrière-plan et arrêt — & et kill

Ajouter & à la fin d'une commande la lance en arrière-plan, te laissant passer à l'opération suivante sans attendre qu'elle se termine.

sleep 30 & lance en arrière-plan un processus qui se contente d'attendre, sans rien faire pendant 30 secondes, ce qui en fait un bon exemple pour s'entraîner à arrêter un processus.

Pour arrêter un processus en arrière-plan, passe son PID à kill.

Le shell affiche le PID juste après que tu l'as démarré avec &, et tu peux aussi le vérifier dans la liste ps.

Passer le PID à kill envoie un signal de terminaison à ce processus.

Pour un processus qui ne s'arrête pas avec un kill PID normal, envoie un signal d'arrêt forcé avec kill -9 PID.

CommandeSignal envoyéUsage
kill PIDSIGTERM (demande d'arrêt)Arrêt normal ; laisse le processus se nettoyer
kill -9 PIDSIGKILL (arrêt forcé)Forcer l'arrêt d'un processus qui ne s'arrête pas
De l'exécution en arrière-plan à l'arrêt
sleep 30 &tourne en arrière-plan ;le PID est affichépstrouve le PID de sleepdans la listekill PIDtermine le processusayant ce PID
Envoie-le en arrière-plan avec &, trouve le PID avec ps, et termine ce processus avec kill.

Donne le bon PID à kill

kill envoie un signal de terminaison au processus dont tu passes le PID.

Se tromper de numéro arrêterait un autre processus, donc vérifie le PID cible dans la liste ps avant de le lancer.

À propos de kill dans cet environnement

Dans cet environnement en navigateur, passer un PID à kill peut ne pas arrêter le processus comme sur un vrai système, et tu peux voir No such process.

Dans ce cours, tu apprends la forme des commandes kill PID / kill -9 PID.

Sur un vrai serveur, le flux qui consiste à vérifier le PID avec ps et à l'arrêter avec kill fonctionne exactement comme montré.

sleep 60 &     # lance en arrière-plan un processus qui attend 60 secondes
ps             # trouve le PID de sleep dans la liste
kill 123       # passe le PID trouvé (ex. 123) pour le terminer

① Lance sleep 30 & pour démarrer en arrière-plan un processus qui se contente d'attendre 30 secondes.

② Lance ps | grep sleep pour réduire la liste à la seule ligne sleep et trouver son PID (numéro).

③ Passe le numéro trouvé à l'étape ② à kill pour terminer ce processus sleep.

Linux console
0 / 3 exécutée(s)
Loading Linux Terminal...
QUIZ

Vérification des connaissances

Répondez à chaque question une par une.

Question 1Qu'affiche ps quand tu le lances ?

Question 2Qu'affiche echo $$ ?

Question 3Que se passe-t-il quand tu ajoutes & à la fin d'une commande ?