GNU/Linux >> Tutoriels Linux >  >> Linux

Comment tuer ou terminer un processus Linux :Le guide ultime

Les systèmes d'exploitation multitraitement comme Linux et les BSD utilisent plusieurs méthodes pour maximiser l'utilisation du processeur. Un processus est simplement un programme en cours d'exécution. Puisqu'il y aura plus d'un processus Linux en cours d'exécution à un moment donné, la gestion des processus sous Linux est extrêmement cruciale. Les utilisateurs sont souvent confrontés à des problèmes tels que la limitation des ressources du processeur lorsqu'ils exécutent trop de programmes. Des situations comme celle-ci surviennent lorsque le processeur ne parvient pas à gérer le nombre croissant de processus. Bien que cela ne dépende pas entièrement de la puissance de votre processeur, gérer des processus suspendus ou zombies peut être assez frustrant. Pour vous aider à atténuer de tels événements, nous décrivons quelques méthodes standard pour tuer ces processus.

Maîtriser la gestion des processus qui ne répondent pas sous Linux

Vous apprendrez plusieurs façons de mettre fin à un processus Linux qui ne répond pas du tout. Si vous venez de Windows, vous connaissez peut-être Ctrl + Alt + Suppr. De même, les utilisateurs de Mac disposent de la méthode Commande + Option + Échap pour tuer les processus gelés. Linux est beaucoup plus polyvalent que ses homologues et offre plus d'une méthode pour s'attaquer aux processus morts/qui ne répondent pas.

Différentes méthodes pour tuer un processus Linux mort

Nous décrirons principalement deux méthodes pour tuer les processus zombies. Nous utiliserons le terminal Linux pour la première méthode. Pour cela, nous devrons d'abord identifier l'identifiant du processus. Une fois obtenu avec succès, nous pouvons utiliser ce PID pour tuer le programme en envoyant des signaux spécifiques à ce PID.

Vous apprendrez également à effectuer de telles tâches de mise à mort Linux à partir de l'interface utilisateur graphique ou de la fenêtre X. Nous allons tirer parti du 'System Monitor' application disponible dans Ubuntu pour cela. Bien qu'il s'agisse d'une application GNOME, des outils similaires sont disponibles pour d'autres environnements de bureau Linux.

Terminer un processus qui ne répond pas à partir de la ligne de commande

Il existe plusieurs outils pour mettre fin à un processus qui ne répond pas ou est suspendu à partir de la ligne de commande, y compris kill , pkill , et killall . Ces commandes fonctionnent en envoyant des signaux spécifiques à ces processus qui ne répondent pas. Vous aurez besoin de l'identifiant du processus ou du PID informations afin que vous puissiez leur envoyer le signal de terminaison requis.

Le PID ou ID de processus est un numéro unique qui identifie un processus. Ceux-ci sont créés par le noyau Linux pendant l'exécution et le planificateur de processus contrôle leurs activités CPU. Ainsi, chaque fois que vous invoquez une application, le noyau génère d'abord les processus nécessaires et leur attribue ces valeurs PID uniques. Plusieurs PID peuvent être associés à un processus. De plus, chaque processus a un processus parent unique avec un PPID (ID de processus parent) unique.

Donc, si vous pouvez trouver ce PPID, vous pourrez alors envoyer un signal d'arrêt à l'aide de programmes conçus à cet effet. Vous apprendrez ci-dessous comment vérifier les processus en cours d'exécution sous Linux et identifier leur PPID à partir du terminal.

Découvrez les informations PPID

- -

Vous pouvez connaître le PPID d'un processus à l'aide de plusieurs commandes de gestion de processus sous Linux, telles que pidof , pstree , et pgrep . Examinons-les un par un et voyons comment obtenir le PID d'un processus Linux.

Méthode 1 :Utilisation de la commande ps

La commande ps sous Linux affiche tous les processus en cours d'exécution avec d'autres informations liées au processus, telles que le PID dans le terminal. Nous pouvons utiliser cette commande pour répertorier tous les processus, puis filtrer un processus spécifique à l'aide des commandes Linux grep. Il devrait nous montrer les informations d'identification de processus qui nous intéressent.

$ nano> /dev/null &
$ ps aux | grep "nano"

Tout d'abord, nous avons invoqué un éditeur de texte Linux en arrière-plan. Ensuite, nous avons utilisé la commande ps à côté de la commande grep pour connaître le PPID de cet éditeur. La sortie peut contenir plusieurs identifiants de processus, mais nous ne sommes intéressés que par le premier puisqu'il s'agit de notre PPID. Nous pouvons également utiliser la commande Linux awk pour trouver ces informations, comme illustré ci-dessous.

$ ps aux | awk '/nano/ {print $2}'

Cette commande est plus souple car elle supprime toutes les informations non pertinentes. Il n'affichera que les informations PPID que nous recherchons.

Méthode 2 :Utilisation de la commande pstree

La commande pstree nous fournit une vue arborescente de tous les processus en cours d'exécution. Il fournit une vue graphique de la liste des tâches Linux à partir de la fenêtre du terminal. Vous pouvez afficher le PPID ainsi que toutes les informations PID d'un processus à l'aide de cette commande. Consultez les exemples ci-dessous pour savoir comment tirer parti de pstree pour trouver le PPID d'un processus spécifique.

$ nano> /dev/null &
$ pstree -p | grep 'nano'$ stree -p | awk '/nano/ {print $NF}'

Tout d'abord, nous avons créé un processus en arrière-plan en utilisant la première commande. La deuxième commande récupère ensuite le PPID de ce processus en utilisant la commande grep sous Linux. Enfin, la troisième commande nous montre comment récupérer cette valeur à l'aide de la commande awk.

Méthode 3 :Utilisation de la commande pgrep

La commande pgrep est l'une des commandes de gestion de processus les plus simples sous Linux. Il vérifie la liste de tous les processus en cours d'exécution et imprime le PPID d'un processus donné dans la sortie standard ou le terminal dans notre cas. Il fonctionne en effectuant une correspondance regex et est extrêmement bien adapté à l'écriture de scripts shell Linux.

$ nano> /dev/null &
$pgrep 'nano'

Nous avons engendré le processus nano de la même manière que les exemples précédents. Ensuite, nous avons obtenu son PPID en utilisant la commande pgrep. Une fois que nous obtenons cette valeur, nous pouvons effectuer le travail de mise à mort Linux très facilement.

Méthode 4 :Utilisation de la commande pidof

La commande pidof est un autre moyen simple mais utile de déterminer le PPID d'un processus Linux. Il affiche à la fois le PPID et tous les autres PID associés à un processus. Consultez l'étude ci-dessous pour voir comment l'utiliser dans la pratique.

$ nano> /dev/null &
$ pidof nano$ pidof -s nano

Lorsque vous utilisez la commande pidof pour vérifier les processus en cours d'exécution sous Linux, vous verrez souvent plusieurs PID. Habituellement, dans de tels cas, le premier ou le dernier numéro est le PPID, selon qu'ils sont dans un ordre ascendant ou descendant. Vous pouvez utiliser le -s option de pidof pour atténuer cela. Il n'affichera que la valeur PPID.

Méthode 5 :Utilisation de la commande top

La commande top fournit une vue en temps réel de tous les processus en cours d'exécution dans les systèmes d'exploitation de type Unix. Vous pouvez l'utiliser pour afficher la liste des tâches Linux dans votre terminal et connaître les informations PID d'un processus spécifique.

$ en haut

Utilisez les commandes suivantes pour récupérer le PPID d'un processus particulier à partir de la sortie de la commande supérieure.

$ nano> /dev/null &
$ top -n1 -b | grep 'nano'$ haut -n1 -b | awk '/nano/ {print $1}'

Étant donné que top fournit une sortie en temps réel au lieu de décharger des données statiques sur le terminal, nous avons utilisé le -n1 et -b option pour imprimer la sortie statique. Ensuite, vous pouvez récupérer les informations PPID en utilisant la commande grep ou la commande awk sous Linux.

Tuez le processus Linux qui ne répond pas

Vous pouvez utiliser l'une des méthodes ci-dessus pour récupérer le PPID du processus qui ne répond pas. Une fois que vous obtenez cela, il est temps de tuer complètement le processus. Il existe plusieurs commandes qui nous permettent de le faire, telles que kill , pkill , et killall . Nous verrons comment ils fonctionnent un par un dans les sections suivantes.

Méthode 1 :Utilisation de la commande kill

La commande kill est largement utilisée par les administrateurs Linux en raison de sa simplicité et de ses actions robustes. Il prend le PID du processus et un signal. Le noyau tue/interrompt l'exécution du processus en fonction de ce signal. Vous pouvez utiliser la commande suivante pour afficher tous les signaux disponibles pour la commande kill.

$ kill -l

Comme vous pouvez le voir, kill propose 64 signaux différents. Cependant, nous n'aborderons que deux d'entre eux dans ce guide. Il s'agit du signal 9(SIGKILL) et du signal 15(SIGTERM). SIGTERM ou signal 15 est la méthode sûre pour tuer un processus qui ne répond pas. SIGKILL ou le signal 9, en revanche, force l'arrêt d'un processus Linux.

$ kill -9 8631$ kill -KILL 8631

Les commandes ci-dessus sont équivalentes, et elles forceront l'arrêt du processus qui a le PID 8631. C'est le PPID du processus "nano" dans mon système. Remplacez-le par le PID du processus qui ne répond pas dans votre système.

$ kill -15 8631$ kill -TERM 8631

Les commandes ci-dessus sont également équivalentes et tueront le processus avec élégance. C'est pourquoi cela peut prendre un certain temps avant que le processus ne soit tué. De plus, vous devrez peut-être ajouter sudo avant la commande kill si le processus appartient à un autre utilisateur.

Méthode 2 :Utilisation de la commande pkill

La commande pkill est l'une des commandes de gestion de processus les plus polyvalentes de Linux. Cela nous permet de tuer un processus qui ne répond pas en fonction de son nom, de son PID, de son propriétaire et d'autres attributs d'exécution. C'est un outil parfait pour les utilisateurs débutants ou les personnes qui ne sont pas familiarisées avec de nombreuses commandes de terminal standard.

$ pkill nano$ pkill 8631$ pkill -e nano$ pkill -f nano

Vous pouvez utiliser l'une des commandes pkill ci-dessus pour tuer un processus zombie/qui ne répond pas sous Linux. Utilisez le -e option si vous voulez une confirmation sur le travail de mise à mort Linux. La commande pkill permet également aux utilisateurs d'envoyer des signaux de terminaison spécifiques.

Méthode 3 :Utilisation de la commande killall

La commande killall permet aux utilisateurs de tuer les processus qui ne répondent pas en fonction de leurs noms. Il est plus facile à utiliser mais peut poser des problèmes si vous n'êtes pas prudent. Étant donné que killall termine les processus en fonction des noms, il y a toujours une chance que vous finissiez par tuer un processus par hasard. Par exemple, s'il existe différentes versions de nano disponibles sur votre système, le premier exemple les tuera toutes.

$ killall nano$ killall --verbose nano$ killall --interactive nano$ killall --signal KILL nano

Le premier exemple montre l'utilisation de base de la commande killall sous Linux. La deuxième commande indiquera si le travail de mise à mort a réussi ou non, et la troisième commande demandera à l'utilisateur de confirmer avant de tuer le processus. Par défaut, killall utilise le signal SIGTERM pour tuer les processus. Cependant, vous pouvez spécifier le signal manuellement, comme indiqué dans le dernier exemple.

Méthode 4 :Utiliser des lignes simples pratiques

La vraie beauté de Linux réside dans le fait qu'il permet aux utilisateurs de créer des combinaisons de commandes sophistiquées en fonction de leurs besoins. Pour le démontrer, nous avons décrit quelques lignes simples dans la section.

$ nano> /dev/null &
$ kill -9 $(pgrep nano)$ ps aux | grep -e 'nano' | awk '{imprimer $2}' | xargs kill -9

Dans le premier exemple, nous avons utilisé l'interpolation du shell pour transmettre le PID du processus "nano" à la commande Linux kill. Le deuxième exemple utilise plusieurs commandes de terminal quotidiennes et la redirection d'E / S pour tuer le processus. Vous pouvez organiser vos propres lignes astucieuses une fois que vous êtes à l'aise avec le terminal Linux.

Méthode 5 :tuer plusieurs processus à l'aide de scripts shell Linux

Parfois, les utilisateurs peuvent souhaiter mettre fin à plusieurs processus. Nous pouvons facilement automatiser ces tâches en écrivant de simples scripts shell. Si ce sujet vous intéresse, consultez notre guide précédent sur les scripts shell Linux. Le script suivant récupérera le PPID des processus que vous souhaitez tuer, puis les terminera à l'aide de signaux d'arrêt.

$ nano proc-killer.sh
#!/usr/bin/env bashfor pro dans "[email protected]"do pid=$(pgrep $pro | head -1) echo $pid comm="kill -9 $pid" eval $commdone 

Maintenant, enregistrez ce fichier et ajoutez l'autorisation d'exécution en exécutant la commande ci-dessous.

$ chmod +x proc-killer.sh

Vous pouvez maintenant transmettre à ce script le nom des processus que vous souhaitez terminer.

$ ./proc-killer.sh nano gedit vlc

Remplacez simplement les arguments par les noms des processus Linux qui ne répondent pas dans votre système.

Terminer un processus qui ne répond pas à partir de l'interface graphique

Vous pouvez également mettre fin à un processus qui ne répond pas à partir de l'interface utilisateur graphique ou de la fenêtre X. Nous discutons de deux méthodes pour le faire dans la section suivante.

Méthode 1 :Utilisation de l'application xkill

Les distributions Linux modernes utilisent la fenêtre graphique X pour offrir aux utilisateurs une expérience graphique élégante. Il existe un outil simple appelé xkill qui permet aux utilisateurs de fermer une fenêtre d'interface graphique qui ne répond pas. C'est possible puisque sous Linux, la fenêtre de titre d'une application est distincte de l'application elle-même.

Accédez simplement à votre émulateur de terminal Linux et tapez xkill. Il transformera le curseur de votre souris en un bouton X, qui peut être utilisé pour tuer n'importe quelle fenêtre de l'interface graphique.

$ xkill

Maintenant, tout ce que vous avez à faire est de cliquer sur la barre de fenêtre de l'application qui ne répond pas, et elle sera supprimée et disparaîtra instantanément.

Méthode 2 :Utilisation de l'application System Monitor sur Ubuntu

La plupart des distributions Linux courantes sont livrées avec une sorte d'outils de surveillance GUI qui permettent aux utilisateurs de terminer graphiquement un processus Linux suspendu. Par exemple, l'application System Monitor sur Ubuntu nous permettra de mettre fin à un processus qui ne répond pas de manière intuitive. Vous pouvez simplement sélectionner le processus mort dans la liste des processus et le tuer en cliquant avec le bouton droit sur le processus et en sélectionnant l'option kill.

Il existe de nombreuses autres alternatives à cette application, et nous sommes sûrs que vous pouvez facilement en trouver une pour votre environnement de distribution ou de bureau.

Fin des pensées

Étant donné que la gestion des processus sous Linux est très polyvalente, les utilisateurs sont souvent frustrés lorsqu'ils traitent avec des processus qui ne répondent pas. C'est pourquoi nos éditeurs ont décrit toutes les manières possibles de mettre fin à un processus Linux mort dans ce guide. Après avoir lu ceci, vous devriez être en mesure de tuer tous les processus qui ne répondent pas à partir de la ligne de commande ou de l'interface graphique. Vous pouvez également utiliser l'une de nos commandes en une seule ligne pour faire face à ces nuisances dans les plus brefs délais. De plus, vous pouvez même tuer plus d'un processus en utilisant notre simple script shell. J'espère donc que vous avez obtenu les informations que vous recherchiez grâce à notre guide.


Linux
  1. Comment tuer un processus zombie sous Linux

  2. Comment trouver et tuer le processus Zombie sous Linux

  3. Linux - Comment définir l'affinité du processeur d'un processus sous Linux ?

  4. Comment tuer un processus sous Linux en utilisant la commande ?

  5. Comment obtenir l'ID de processus pour tuer un processus nohup ?

Comment tuer les processus Zombie sous Linux

Comment changer la priorité d'un processus sous Linux

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

Comment tuer un processus sous Linux

Comment envoyer des processus en arrière-plan sous Linux

Comment rétrograder des packages sur le système Linux :le guide ultime