Comment tuer des processus depuis le terminal Linux


Liens rapides

Points clés à retenir

  • Tuer un processus signifie simplement le forcer à s’arrêter, et cela peut être nécessaire lorsqu’un processus ne répond pas ou se comporte mal.
  • Linux et macOS ont des commandes telles que kill, pkill et killall qui vous permettent de terminer les processus par leur PID ou leur nom.
  • Il est important d’être prudent lorsque vous interrompez des processus et de vous assurer que vous terminez le bon processus pour éviter toute conséquence inattendue.


Tuer un processus est parfois le seul moyen de s’en débarrasser. Malgré son nom dur, « tuer » un processus signifie simplement « le forcer à s’arrêter ». Voici comment procéder à partir de la ligne de commande Linux ou macOS.


Qu’est-ce qu’un processus ?

L’exécution de programmes tels que votre navigateur Web, les processus en arrière-plan associés à votre environnement de bureau et les services système Linux sont tous des processus.

Vous pouvez regrouper les processus en deux groupes :

  • Processus de premier plan sont ceux qui ont été démarrés ou lancés par un utilisateur. Ils peuvent se trouver dans une fenêtre de terminal ou dans une application graphique.
  • Processus en arrière-plan sont tous les processus qui sont démarrés automatiquement et n’ont aucune interaction avec les utilisateurs. Ils n’attendent pas de contribution des utilisateurs et ne leur présentent pas non plus de résultats ou de résultats. Les processus d’arrière-plan sont des choses comme les services et les démons.

Si les processus de premier plan sont le personnel du théâtre et les acteurs, les processus d’arrière-plan sont l’équipe des coulisses.

Lorsque les processus se comportent mal ou fonctionnent mal, ils peuvent monopoliser trop de temps CPU, consommer votre RAM ou entrer dans une boucle de calcul étroite et ne plus répondre. Les applications graphiques peuvent refuser de répondre aux clics de souris. Les applications de terminal peuvent ne jamais vous renvoyer à l’invite de commande.

À quoi sert l’arrêt d’un processus ?

« Tuer » un processus signifie simplement « forcer le processus à s’arrêter ». Cela peut être nécessaire si le processus refuse de répondre.

Linux fournit le kill, pkillet killall commandes pour vous permettre de faire exactement cela. Ces commandes peuvent être utilisées avec tout type de processus, graphique ou en ligne de commande, en premier plan ou en arrière-plan.

La commande kill

Utiliser kill, vous devez connaître l’ID de processus (PID) du processus que vous souhaitez terminer. Le ps La commande peut être utilisée pour trouver le PID d’un processus.

Avoir ps rechercher dans tous les processus utiliser le -e (tous les processus). Acheminement de la sortie via less est conseillé, il y en aura beaucoup. Taper psun espace,-e un espace, | (un caractère barre verticale), un autre espace puis tapez less. Appuyez sur Entrée pour exécuter la commande.

ps -e | less

commande ps dans une fenêtre de terminal

Cela vous donnera une liste de processus qui ressemble à la capture d’écran ci-dessous. Vous pouvez effectuer une recherche vers l’avant dans less en utilisant le / et vous pouvez effectuer une recherche en arrière à l’aide de la touche ? clé.

sortie de ps dans une fenêtre moins

Pour vous concentrer sur le processus qui vous intéresse, dirigez la sortie de ps à travers grep et spécifiez le nom – ou une partie du nom – du processus.

ps -e | grep shutter

commande ps transmise via grep pour trouver le processus d'obturation

Une fois que vous avez localisé le PID du processus que vous souhaitez terminer, transmettez-le au kill commande en paramètre. Pour mettre fin au shutter processus identifié par la commande précédente, utilisez cette commande :

kill 2099

commande kill dans une fenêtre de terminal

Le kill La commande est un assassin silencieux – elle ne vous donne aucun retour si elle réussit.

Cela fonctionne également de la même manière pour supprimer des processus sur macOS.

La commande pkill

Le pkill La commande vous permet de tuer un ou plusieurs processus par leur nom. Vous n’avez pas besoin d’identifier le processus par PID. Utiliser pkill vous fournissez un terme de recherche qui pkill utilise pour vérifier la liste des processus en cours d’exécution. Les processus de correspondance sont terminés. Vous devez donc être sûr que le terme de recherche est correctement orthographié.

Comme filet de sécurité, vous pouvez utiliser le pgrep commande avant d’utiliser le pkill commande. Le pgrep La commande accepte également un terme de recherche. Il répertoriera le PID de chaque processus qui correspond au terme de recherche. C’est sûr parce que pgrep n’émettra aucun signal d’arrêt aux processus, et si vous tapez mal le terme de recherche, vous ne tuerez pas un autre processus par erreur. Vous pouvez vous assurer que le terme de recherche est correctement réfléchi avant de le transmettre à pkill. Les deux pkill et pgrep traitez le terme de recherche de la même manière. Leur traitement est tellement similaire qu’ils partager la même page de manuel.

Supposons qu’il existe un processus avec « subq » dans son nom. Nous utiliserons le ps -u dave | grep commande pour jeter un coup d’œil derrière le rideau. Vous pouvez voir que « subq » correspondra à ce processus et à ce processus seul. C’était juste pour que vous puissiez voir le nom complet du processus.

ps -u dave | grep subq

commande ps dans une fenêtre de terminal

Supposons que notre utilisateur ne l’ait pas fait ; tout ce qu’ils savent, c’est que le nom du processus contient la sous-chaîne « subq ». Ils utilisent pgrep pour vérifier qu’il n’y a qu’une seule correspondance avec le terme recherché. Ils utilisent ensuite ce terme de recherche avec pkill.

pgrep subq

pkill subq

pgrep et pkill dans une fenêtre de terminal

Vous pouvez utiliser pkill pour tuer plusieurs processus à la fois. Ici, l’utilisateur exécute pgrep pour vérifier combien de processus Chrome a lancés. Ils utilisent pkill pour tous les tuer. Ils vérifient ensuite auprès pgrep qu’ils ont tous été supprimés.

pgrep chrome

pkill chrome

pgrep chrome

pgrep et pkill dans une fenêtre de terminal

Si plusieurs processus portant le même nom sont en cours d’exécution, mais que vous ne souhaitez pas tous les tuer, vous pouvez utiliser pgrep avec le -f (ligne de commande) pour identifier quel processus est lequel. Un exemple simple serait deux ping processus. Vous voulez tuer l’un d’eux mais pas l’autre. Vous pouvez utiliser leurs lignes de commande pour les distinguer. Notez l’utilisation de guillemets pour envelopper le paramètre de ligne de commande.

pgrep -f "ping 192.168.4.22"

pkill -f "ping 192.168.4.22"

pgrep pkill avec la ligne de commande ping

La commande killall

Avertissement: Dans les systèmes d’exploitation Solaris et OpenIndiana, le killall La commande tuera tous les processus qui vous appartiennent. Si vous êtes root ou si vous avez émis sudo killall vous redémarrerez votre ordinateur ! Lors des recherches pour cet article, ce comportement a été confirmé avec la dernière version d’OpenIndiana Hipster 2018.10.

Le killall commande fonctionne de la même manière au pkill commande mais avec une différence spécifique. Au lieu de transmettre un terme de recherche à la commande, vous devez fournir le nom exact du processus.

Vous ne pouvez pas fournir une correspondance partielle avec un nom de processus ; vous devez fournir le nom complet du processus, comme indiqué :

killall shutt

killall shutter

commande killall dans une fenêtre de terminal

Le -y (plus jeune que) vous permet de tuer les processus qui sont en cours d’exécution depuis moins d’une période spécifiée. La période est indiquée en chiffres suivis de l’une de ces unités :

  • s (secondes)
  • m (minutes)
  • h (heures)
  • j (jours)
  • w (semaines)
  • M (mois, note, majuscule « M »)
  • y (années)

Pour tuer un processus appelé ana qui vient d’être lancé et laisse toutes les instances plus anciennes de ana en cours d’exécution, vous pouvez utiliser les paramètres suivants avec killallsi vous aviez réagi dans les deux minutes :

killall -y 2m ana

killall avec option plus jeune que

Le -o (plus ancien que) vous permet de tuer les processus qui sont en cours d’exécution depuis plus d’une période spécifiée. Cette commande tuera tout ssh connexions qui fonctionnent depuis plus d’une journée :

killall -o 1d sshd

commande killall dans une fenêtre de terminal

Pouvez-vous tuer n’importe quel processus ?

Ces commandes vous permettront d’identifier et de mettre fin correctement aux processus erronés avec précision et sécurité. Cependant, vous pouvez être aussi déclencheur heureux, et il est tout à fait possible de mettre fin à un processus que vous ne devriez pas.

Soyez toujours prudent. Tout d’abord, assurez-vous que le processus que vous êtes sur le point de tuer est bien celui que vous souhaitez. Deuxièmement, vérifiez bien : soyez prudent et assurez-vous que le processus ciblé est celui auquel vous souhaitez mettre fin. Continuez à mettre fin au processus une fois que vous êtes satisfait.

Si vous mettez fin à un processus accidentellement, ce n’est pas la fin du monde. Le résultat le plus probable est que quelque chose devient buggé et que vous devez redémarrer votre PC, sinon vous risquez de perdre le travail que vous avez effectué dans le programme associé au processus que vous avez terminé.



Vous pouvez lire l’article original (en Angais) sur le blogwww.howtogeek.com