Tuer un processus est parfois le seul moyen de s'en débarrasser. Malgré le 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:
- 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.
- Processus en 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 de 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 «dans les 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 le
tuer
,
pkill
, et
tuer tous
commandes 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.
Le commandement de tuer
Utiliser
tuer
, 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 utilise le
-est
(tous les processus) option. Tuyauterie de la sortie à travers
Moins
est souhaitable, il y en aura pas mal. Type
ps
, un espace,
-est
, un espace,
|
(un caractère pipe), un autre espace, puis tapez
Moins
. Appuyez sur Entrée pour exécuter la commande.
ps -e | Moins
Cela vous donnera une liste de processus qui ressemble à la capture d'écran ci-dessous. Vous pouvez rechercher en avant dans
Moins
en utilisant le
/
et vous pouvez rechercher en arrière à l'aide de la
?
clé.
Pour vous concentrer sur le processus qui vous intéresse, dirigez la sortie de
ps
à travers
poignée
et spécifiez le nom - ou une partie du nom - du processus.
ps -e | volet de poignée
Une fois que vous avez localisé le PID du processus que vous souhaitez terminer, transmettez-le au
tuer
commande en tant que paramètre. Pour terminer le
obturateur
processus identifié par la commande précédente, utilisez cette commande:
tuer 2099
le
tuer
La commande est un assassin silencieux - elle ne vous donne aucun commentaire si elle a réussi.
La commande pkill
le
pkill
La commande vous permet de tuer un ou plusieurs processus par 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 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 le
pgrep
commander
avant
vous utilisez le
pkill
commander. le
pgrep
La commande accepte également un terme de recherche. Il listera 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 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
. Tous les deux
pkill
et
pgrep
traiter le terme de recherche de la même manière. Leur traitement est si 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
Supposons que notre utilisateur
n'a pas
c'est 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
Vous pouvez utiliser
pkill
pour tuer plusieurs processus à la fois. Ici l'utilisateur s'exécute
pgrep
pour vérifier le nombre de processus lancés par Chrome. Ils utilisent
pkill
pour les tuer tous. Ils vérifient ensuite avec
pgrep
qu'ils ont tous été supprimés.
chrome pgrep
pkill chrome
chrome pgrep
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
pgrep
avec le
-f
(ligne de commande) pour identifier quel processus est quel. Un exemple simple serait deux
ping
processus. 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"
La commande killall
avertissement
: Dans les systèmes d'exploitation Solaris et OpenIndiana, le
tuer tous
commande va
tuer tous les processus qui vous appartiennent
. Si vous êtes root ou si vous avez émis
sudo killall
vous redémarrerez votre ordinateur! Lors de la recherche de cet article, ce comportement a été confirmé avec la dernière version d'OpenIndiana Hipster 2018.10.
le
tuer tous
commander
fonctionne de manière similaire
à la
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
obturateur killall
le
-Y
L'option (plus jeune que) vous permet de supprimer les processus en cours
Moins
qu’une période déterminé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é
mère
qui vient d'être lancé et laisser toutes les anciennes instances de
mère
en cours d'exécution, vous pouvez utiliser les paramètres suivants avec
tuer tous
, si vous aviez réagi dans les deux minutes:
Diminue moi ou moi
le
-Le
L'option (plus ancienne 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 tuera tout
ssh
connexions qui fonctionnent depuis plus d'un jour:
killall -o 1d sshd
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.