Linux Tutoriels

Comment tuer des processus depuis le terminal Linux

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 d’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:

Les 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 être une application graphique.
Les processus d’arrière-plan sont tous les processus qui sont lancés automatiquement et qui n’ont aucune interaction avec les utilisateurs. Ils n’attendent pas les commentaires des utilisateurs et ne leur présentent pas 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 devant le personnel du théâtre et les acteurs, les processus d’arrière-plan sont l’équipe «en coulisses».

Lorsque les processus se comportent mal ou fonctionnent mal, ils peuvent monopoliser trop de temps processeur, consommer votre RAM ou entrer dans une boucle de calcul serrée 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.

La réponse humaine

«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 les commandes kill, pkill et killall pour vous permettre de faire exactement cela. Ces commandes peuvent être utilisées avec tout type de processus, graphique ou ligne de commande, au premier plan ou en arrière-plan.

  Comment sélectionner les bascules qui apparaissent dans les paramètres rapides sous Android 7.0

Le commandement de tuer

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

Pour que ps effectue une recherche dans tous les processus, utilisez l’option -e (tous les processus). Il est conseillé de faire passer la sortie à travers moins, il y en aura pas mal. Tapez ps, un espace, -e, un espace, | (un caractère de pipe), un autre espace, puis tapez moins. 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 rechercher en avant en moins en utilisant la touche / et vous pouvez rechercher en arrière en utilisant le? clé.

sortie de ps dans une fenêtre inférieure

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

ps -e | grep shutter

La commande ps est acheminée via grep pour trouver le processus d'obturation

Une fois que vous avez localisé le PID du processus que vous souhaitez terminer, passez-le à la commande kill en tant que paramètre. Pour terminer le processus d’obturation identifié par la commande précédente, utilisez cette commande:

kill 2099

commande kill dans une fenêtre de terminal

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

La commande pkill

La commande pkill vous permet de tuer un ou plusieurs processus par nom. Vous n’avez pas besoin d’identifier le processus par PID. Pour utiliser pkill, vous fournissez un terme de recherche que pkill utilise pour vérifier la liste des processus en cours d’exécution. Les processus de mise en correspondance sont terminés. Vous devez donc être certain que vous avez correctement orthographié ce terme de recherche.

Comme filet de sécurité, vous pouvez utiliser la commande pgrep avant d’utiliser la commande pkill. La commande pgrep accepte également un terme de recherche. Il listera le PID de chaque processus qui correspond au terme de recherche. Ceci est sûr car pgrep n’émettra aucun signal d’arrêt aux processus, et si vous saisissez 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 pensé avant de le transmettre à pkill. Pkill et pgrep traitent le terme de recherche de la même manière. Leur traitement est si similaire qu’ils partager la même page de manuel.

  Comment installer SuperTuxKart sur Linux

Supposons qu’il y ait un processus avec «subq» dans son nom. Nous utiliserons le ps -u dave | grep 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 de recherche. 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 le nombre de processus lancés par Chrome. Ils utilisent pkill pour tous les tuer. Ils vérifient ensuite avec 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 voulez pas tous les tuer, vous pouvez utiliser pgrep avec l’option -f (ligne de commande) pour identifier quel processus est lequel. Un exemple simple serait deux processus de ping. Vous voulez tuer l’un d’entre eux mais pas l’autre. Vous pouvez utiliser leurs lignes de commande pour les distinguer. Notez l’utilisation de guillemets pour encapsuler 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, la commande killall supprimera tous les processus qui vous appartiennent. Si vous êtes root ou si vous avez émis sudo killall, vous redémarrerez votre ordinateur! Au cours de la recherche pour cet article, ce comportement a été confirmé avec la dernière version d’OpenIndiana Hipster 2018.10.

  Comment enregistrer une carte d'abonnement ou de magasin dans Apple Wallet

La commande killall fonctionne de la même manière à la commande pkill 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

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

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

Pour tuer un processus appelé ana qui vient d’être lancé et laisser toutes les anciennes instances d’ANA en cours d’exécution, vous pouvez utiliser les paramètres suivants avec killall, si vous avez réagi dans les deux minutes:

killall -y 2m ana

killall avec l'option plus jeune que

L’option -o (plus ancien que) vous permet d’arrêter les processus qui ont été exécutés pendant plus longtemps qu’une période spécifiée. Cette commande supprimera toutes les connexions ssh en cours d’exécution depuis plus d’un jour:

killall -o 1d sshd

commande killall dans une fenêtre de terminal

Ne soyez pas trop heureux

Ces commandes vous permettront d’identifier et de terminer correctement les processus errants avec précision et sécurité.

Soyez toujours prudent. Tout d’abord, assurez-vous que le processus que vous êtes sur le point de tuer est vraiment celui que vous souhaitez. Deuxièmement, revérifiez – soyez prudent et assurez-vous que le processus ciblé est celui que vous voulez terminer. Continuez à terminer le processus une fois que vous êtes satisfait.