Raisons pour lesquelles Kill peut ne pas fonctionner dans Linux, comment le résoudre?

Raisons pour lesquelles Kill peut ne pas fonctionner dans Linux, comment le résoudre?

Nous avons tous, à un moment ou à un autre, un programme de gel et de ne pas répondre. Dans de tels cas, terminer le programme et le redémarrer est une solution simple et efficace. Dans cet article, nous vous montrerons comment vous pouvez mettre fin aux processus non réactifs en utilisant la commande kill.

La commande de mise à mort

Comme mentionné précédemment, lorsqu'un programme cesse de répondre et que vous ne pouvez pas le redémarrer, vous avez besoin d'une nouvelle solution. À ce stade, les utilisateurs de Windows ouvriraient leur gestionnaire de tâches pour se débarrasser du processus gelé. Il n'y a pas de gestionnaire de tâches intégré dans Linux, mais il y a une commande que nous pouvons utiliser pour obtenir le même effet que la fonctionnalité de tâche finale dans Windows. Cette commande est connue sous le nom de commande Kill, et nous pouvons l'utiliser de plusieurs manières pour nous aider et le système à se débarrasser des instances corrompues.

Tuer la syntaxe

La syntaxe de la commande kill est simple.

$ kill - [signal] pid

Ici, deux choses ont besoin d'explications - à savoir le signal et le pid. Regardons les deux un par un et apprenons comment ils contribuent à la fonctionnalité de cette commande.

Le paramètre de signal

Le premier est le signal. Les signaux sont des chiffres simples qui représentent un nom. La commande kill peut effectuer différentes tâches en fonction du signal que vous fournissez. Les utilisateurs peuvent utiliser plus de 60 valeurs différentes pour les signaux, qui effectuent tous des tâches distinctes et spécifiques. Pour afficher toutes ces options, vous pouvez utiliser la commande suivante:

$ Kill -l

Lorsque vous utilisez cette commande sur le terminal de commande d'Ubuntu, vous obtenez ceci sur votre écran:

Comme vous pouvez le voir, il existe un total de 64 options que vous pouvez sélectionner.

Bien qu'il existe plus de 60 signaux différents, deux des plus courants sont décrits ci-dessous.

  1. Sigkill (9): Comme son nom l'indique, cette commande tue complètement le processus sans enregistrer les données du programme. Cette commande ne doit être utilisée qu'en dernier recours.
  2. Sigterm (15): Cela génère un signal de terminaison qui ferme le programme d'une manière de sécurité première. C'est aussi le signal par défaut.

Les signaux peuvent être spécifiés davantage de 3 manières différentes décrites ci-dessous.

1. Nous pouvons spécifier le signal avec le chiffre respectif:

$ kill -9 pid

2. Nous pouvons spécifier le signal avec son nom:

$ kill -sigkill pid

3. Nous pouvons spécifier le signal sans sig dans le nom.

$ kill -Kill pid

Toutes ces commandes effectuent la même tâche.

Le paramètre PID

PID est le numéro d'identification du processus. Dans les systèmes de type Linux et Unix, chaque processus effectué par le système reçoit un numéro d'identification de processus (appelé PID ci-après). Pour tuer un processus, il faut connaître son PID. Pour trouver le PID pour un processus donné, nous pouvons utiliser les commandes suivantes.

$ pidof [Nom du processus]
$ pgrep [Nom du processus]

Lorsque vous utilisez ces deux commandes dans le terminal de commande d'Ubuntu, vous obtenez le résultat suivant.

En utilisant la commande kill

Maintenant que vous avez compris la syntaxe, nous pouvons exécuter la commande kill. Par exemple, nous utiliserons Kill on Thunderbird Mail - un programme préinstallé à Ubuntu. Nous allons d'abord identifier son PID, puis terminer le processus en utilisant le signal Sigterm.

Tout d'abord, ouvrez le terminal de commande pour Ubuntu. Une fois terminé, exécutez la commande suivante:

$ pgrep Thunderbird

Vous devriez obtenir une sortie similaire à celle que nous avons obtenue dans l'image ci-dessous:

Comme vous le savez maintenant, le Pid of Thunderbird Mail exécute la commande suivante pour mettre fin au processus.

$ kill -sigterm 7075

Ou

$ kill -15 7075

Lorsque vous appuyez sur Entrée, vous remarquerez que le processus et sa fenêtre n'existent plus. Vous pouvez également mettre fin à plusieurs processus ensemble en entrant simultanément dans les PID des processus.

$ kill - [signal] pid1 pid2… pidn

De plus, les utilisateurs peuvent résilier un processus en utilisant à la fois les commandes Kill et Pidof / Pgrep dans la même ligne. La syntaxe pour un tel arrangement est:

$ kill - [signal] $ pgrep [nom de processus]

Les raisons pour lesquelles tuer peut ne pas fonctionner

Comme indiqué précédemment, le signal par défaut envoyé avec la commande kill est sigter. SIGTERM informe essentiellement le processus qu'il devrait se nettoyer et être résilié. C'est la «belle» façon de mettre fin ou de tuer un processus. Cependant, avec certains processus, il est possible que la belle manière ne le coupe pas.

Si vous remarquez que le processus que vous aviez commandé de terminer est toujours en cours d'exécution après avoir utilisé le signal Sigterm, ne vous inquiétez pas, car il s'agit d'une complication courante qui se produit lors de l'utilisation de Kill. Comme nous l'avons dit, cela peut parfois se produire et avec certains processus.

Pour vous débarrasser de ce problème, vous pouvez utiliser le signal Sigkill pour terminer complètement le processus. Le signal Sigkill permet au système de prendre les choses en main. Donc, si vous rencontrez une situation aussi collante, vous pouvez toujours en sortir en utilisant le signal Sigkill ou -9.

Il est important que vous utilisiez Sigkill avec parcimonie et lorsqu'il est présenté avec une situation que Sigterm ne peut pas résoudre. Sigterm reste la valeur par défaut et la plus sûre; Par conséquent, la meilleure façon de mettre fin à un processus.

La commande killall

La commande kill est originaire de Linux et d'autres systèmes d'exploitation basés sur UNIX, mais la commande Killall est destinée aux utilisateurs Linux uniquement. Cette commande permet à l'utilisateur de terminer un processus en utilisant le nom du processus. Il n'est pas nécessaire de trouver le PID du processus. La syntaxe de la commande Killall est:

$ killall - [signal] [Nom du processus]

Cette commande peut servir de belle alternative si, pour une raison quelconque, Kill ne fonctionne pas pour vous même après les solutions prescrites.

Conclusion

Cet article a appris la commande kill, son but, sa syntaxe, ses paramètres et son utilisation. De plus, nous avons vu ce qui peut faire fonctionner la commande de kill ne pas fonctionner correctement et résoudre ces problèmes. J'espère que cela a été une lecture informative et intéressante pour vous, et nous avons résolu tous les problèmes que vous avez avec cette commande.