Comment tuer un processus en cours d'exécution sur Linux

Comment tuer un processus en cours d'exécution sur Linux

Tout ce qui s'exécute sur un système Linux - un service, un script ou autre chose - est considéré comme un «processus.«Si vous devez mettre fin à un processus en cours d'exécution sur Linux, le tuer La commande est sûre de faire le travail.

Dans ce guide pour les administrateurs Linux, nous passerons en revue tuer Commande Linux et comment utiliser ses différentes options pour terminer ou «tuer», un processus en cours d'exécution sur Linux.

Dans ce tutoriel, vous apprendrez:

  • Comment fonctionne la commande Kill?
  • Comment voir quels processus fonctionnent
  • Comment tuer un processus par PID
  • Comment tuer un processus qui refuse de fermer
  • Comment tuer un processus par son nom
Comment tuer un processus en cours d'exécution sur Linux

Exigences et conventions logicielles utilisées

Exigences logicielles et conventions de ligne de commande Linux
Catégorie Exigences, conventions ou version logicielle utilisée
Système Ubuntu, Debian, Centos, Rhel, Fedora
Logiciel Aucun
Autre Accès privilégié à votre système Linux en tant que racine ou via le Sudo commande.
Conventions # - Exige que les commandes Linux soient exécutées avec des privilèges racine soit directement en tant qu'utilisateur racine, soit par l'utilisation de Sudo commande
$ - Exige que les commandes Linux soient exécutées en tant qu'utilisateur non privilégié régulier

Comment fonctionne la commande Kill?

Avec un nom comme «Kill», vous pourriez vous attendre à ce que cet utilitaire soit utilisé pour mettre fin immédiatement à un processus. Bien que ce soit vrai, tuer Seule les fonctions de cette manière lorsqu'elles sont utilisées avec certaines options. Par défaut, tuer essaiera d'arrêter un processus aussi gracieusement que possible.

En termes techniques, tuer envoie un Sigterm signale au processus spécifié, et qui demande au processus de fermer. C'est une façon polie de mettre fin à un processus en cours d'exécution et donne à l'application ou au service de service pour conclure les choses en premier - comme finir la rédaction des fichiers en journal, fermer les connexions ouvertes qui ont été engendrées par le processus, etc.



Le seul problème avec cela est qu'un programme obstiné peut ignorer le Sigterm signal. Cela se produit surtout dans un processus gelé ou «raccroché." Cependant, tuer peut être utilisé pour envoyer de nombreux signaux différents à un processus, et peut même forcer les plus têtus à fermer avec un Sigkill signal. Nous passerons en revue ces options dans la section suivante.

La chose importante à retirer de ces informations est que, lorsque cela est possible, vous devez envoyer un signal SIGTerm ordinaire à un processus que vous souhaitez terminer. Tuant immédiatement un service avec un Sigkill Le signal est efficace à chaque fois et vous donnera des résultats instantanés, mais peut causer des problèmes futurs car le processus n'a pas eu la chance de fermer correctement.

Comment voir quels processus fonctionnent

Chaque processus de Linux se voit attribuer un «ID de processus» unique, généralement abrégé comme Piquer dans le terminal Linux. Parfois, connaître le PID d'un processus est nécessaire pour y mettre fin. Pour voir une liste des processus en cours d'exécution et leurs numéros PID correspondants, utilisez le ps commande:

# ps -e 

Cela peut produire beaucoup de sortie, car même une nouvelle installation de Linux peut avoir pas mal de processus en cours, il est donc généralement préférable de tuer cette commande pour grep ou plus.

Pour une vue plus gérable:

# ps -e | plus -15 


Ou pour rechercher un processus spécifique (SSH dans cet exemple):

# ps -e | grep ssh 
Obtenez le PID d'un processus en cours d'exécution

Une autre façon pratique de voir une liste des processus en cours d'exécution et leurs PID est avec le haut commande. Parfois, cela est encore plus utile, car il montre également la quantité de ressources système utilisées par les processus.

Voir le PID avec la commande supérieure

Comment tuer un processus par PID



Une fois que vous avez déterminé le PID du processus que vous souhaitez terminer, vous pouvez le spécifier comme un argument au tuer commande. Par exemple, pour mettre fin à un processus avec un PID de 1234:

# Kill 1234 

Cette commande envoie un Sigterm signal et devrait être capable d'arrêter la plupart des processus dans un deuxième ou deux. N'oubliez pas que vous pouvez utiliser le ps commander à nouveau pour vérifier que le processus a fermé avec succès.

# ps -e | grep 1234 

Comment tuer un processus qui refuse de fermer

Si vous avez rencontré un processus obstiné qui refuse de fermer, vous pouvez émettre un Sigkill signal avec le -9 option sur tuer.



# Kill -9 1234 

N'oubliez pas d'utiliser cette option avec parcimonie, car ce n'est pas la façon idéale de mettre fin à un processus (mais parfois vous devez).

Normalement, Sigterm et Sigkill sont probablement les deux seuls signaux que vous devrez utiliser, mais il y en a beaucoup d'autres que vous pouvez envoyer avec le tuer commande. La commande suivante sortira une liste complète:

# kill -l 
Une liste des signaux que tuer peut envoyer

Il est bon d'être au moins conscient des autres options, car certains programmes ou scripts peuvent recommander leur utilisation.

Comme vous pouvez le voir dans la sortie, Sigkill est répertorié au n ° 9, c'est pourquoi le -9 Le commutateur envoie le Sigkill signal. Spécifiez un numéro différent pour envoyer son signal respectif à un processus.



Comment tuer un processus par son nom

Il existe un moyen plus rapide de mettre fin à un processus que d'avoir à rechercher son pid à chaque fois. Utilisez le pkill commande et le nom du processus que vous souhaitez tuer. Par exemple, voici comment tuer SSH:

# pkill ssh 

Le pkill La commande est capable d'envoyer différents signaux, tout comme le régulier tuer commande:

# pkill -9 ssh 

Ne vous inquiétez pas d'obtenir le nom exact du processus, soit. Cette commande a tué un processus nommé SSH-Agent qui fonctionnait sur notre système.



Il y a un inconvénient à utiliser pkill au lieu de tuer. Dites que vous avez deux processus SSH en cours d'exécution, «SSH-Server» et «SSH-Agent». Émettre la commande ci-dessus pkill va terminer ces deux processus, même si vous aviez seulement fini à SSH-Agent.

C'est aussi un problème si vous avez plusieurs instances de script en cours d'exécution, depuis que pkill Pour terminer ce script va terminer toutes les instances du script. Là encore, parfois ce comportement peut être préférable. Si vous avez besoin du contrôle plus granulaire, n'oubliez pas d'opter pour le tuer commande à la place.

Conclusion

Dans cet article, nous avons vu comment tuer tout processus exécuté sur un système Linux en utilisant le tuer commande. Nous avons appris à tuer un processus soit par son PID ou par son nom, ainsi que les avantages et les inconvénients des deux méthodes.

Avec connaissance du tuer commande et les meilleures pratiques pour l'utiliser, vous avez plus de contrôle sur les processus exécutés sur votre système. Ceci est particulièrement pratique pour les programmes qui «raccrochent» et refusent de fermer parfois.

Tutoriels Linux connexes:

  • Choses à installer sur Ubuntu 20.04
  • Choses à faire après l'installation d'Ubuntu 20.04 Focal Fossa Linux
  • Commandes Linux de base
  • Comment propager un signal aux processus d'enfants à partir d'un bash…
  • Commandes Linux: les 20 meilleures commandes les plus importantes que vous devez…
  • Une introduction à l'automatisation Linux, des outils et des techniques
  • Choses à faire après l'installation d'Ubuntu 22.04 Jammy Jellyfish…
  • Téléchargement Linux
  • Installez Arch Linux dans VMware Workstation
  • Comment imprimer l'arbre du répertoire à l'aide de Linux