Nombres de signaux de kill linux

Nombres de signaux de kill linux
Ce tutoriel explique ce que sont les signaux de kill linux et comment les utiliser pour interrompre, résilier, suspendre et continuer les processus.

Qu'est-ce que Linux Kill Signals?

Les signaux de tue permettent d'interaction entre les différents processus. Les signaux concrètes sont des notifications d'événements envoyées aux processus principalement pour interrompre, résilier, tuer ou suspendre les processus (c'est pourquoi nous utilisons le terme «tuer»). Les signaux peuvent être envoyés par processus ou par le noyau, et normalement ils sont envoyés lorsqu'une anomalie ou une condition exceptionnelle nécessite un traitement spécial, ou lorsqu'un utilisateur interrompt ou met fin à un processus manuellement (E.g., Lorsque vous appuyez sur Ctrl + C),

Lorsqu'un signal est envoyé à un processus, ce signal, ou notification peut répondre à une action par défaut en réponse ou peut être gérée par un gestionnaire de signaux. Un gestionnaire de signaux est un code personnalisé du programme dont le processus a reçu le signal, qui définit le comportement du processus lorsque le signal est reçu (à l'exception des signaux Sigkill et Sigstop, qui ne peuvent pas être gérés, ignorés, ni bloqués).

Lorsque le signal est envoyé, les actions par défaut qui peuvent avoir lieu sont les suivantes:

  • Terme: Le processus est terminé.
  • IGN: Le signal est ignoré sans affecter le processus.
  • Cœur: Un fichier de dynamist-core est créé.
  • Arrêt: Le processus est arrêté.
  • Suite: Le processus reprend après avoir été arrêté.

Selon le signal que certaines de ces actions peuvent avoir lieu, le programme peut également contenir un gestionnaire de signaux pour exécuter l'action appropriée.

Résumé: les signaux sont des messages livrés aux processus en leur informant qu'un événement s'est produit.

Signaux disponibles:

Pour répertorier tous les noms de signaux et nombres de votre système, vous pouvez utiliser la commande kill suivie par l'indicateur -L, comme indiqué ci-dessous.

tuer -l

Comme vous pouvez le voir, il y a 64 signaux, probablement le plus connu par nous tous est le numéro 9 (Sigkill) utilisé pour mettre fin aux processus, y compris les processus enfants, immédiatement.

  • Sigkill (9): Le signal Sigkill est utilisé pour tuer ou résilier immédiatement les processus. Les signaux Sigkill ne peuvent pas être manipulés, ignorés ou arrêtés.
  • Sigstop (19): Ce signal consiste à arrêter ou à pause les processus qui peuvent être repris plus tard.
  • Sigcont (18): Le signal SIGCont est utilisé pour reprendre les processus arrêtés ou interrompus.

Comment utiliser les signaux de kill:

La syntaxe correcte pour envoyer des signaux est:

tuer <-SignalName>

ou

tuer <-SignalNumber>

Vous pouvez remplacer IR par les noms ou numéros que nous avons obtenus auparavant lors de l'exécution de la commande kill -l. Le PID est l'ID de processus que vous pouvez apprendre en utilisant la commande PS comme indiqué dans les instructions suivantes.

Pour commencer la section pratique de ce didacticiel, essayons le Sigstop et Sigcont pour suspendre un processus, puis reprendre.
Pour le premier exemple, j'ai créé un petit code LinuxHintSignal qui imprime en continu "linuxhint.com”Comme indiqué dans la capture d'écran ci-dessous.

Pour envoyer un signal au processus, avant d'avoir besoin d'apprendre son PID. Pour voir l'ID de processus (PID), vous devez exécuter le ps commande. Dans mon cas, je suis celui qui a exécuté le processus, donc j'utilise le ps commande suivie par le -u Flag pour montrer mes processus uniquement.

Note: Pour plus d'instructions sur la commande PS, lisez en utilisant la commande PS dans Linux.

Comme vous pouvez le voir, le pid de la course LinuxhintSignal Le script est 16182.

La capture d'écran suivante montre deux terminaux; Le terminal droit montre la livraison du signal SIGSTOP pour traiter 16182. Le terminal gauche montre comment le processus est arrêté lorsque j'envoie le signal.

tuer -sigstop

Comme vous pouvez le voir sur le terminal droit, le processus a été arrêté correctement.

Vous devez envoyer le signal SigCont pour reprendre l'exécution du processus, comme indiqué dans les captures d'écran ci-dessous.

tuer -Sigcont

Comme vous pouvez le voir, le processus a repris.

Vous pouvez obtenir le même résultat en remplaçant les noms de signal pour leurs nombres. L'exemple suivant répète le scénario précédent, mais cette fois définit les signaux par leurs nombres.

L'exemple suivant montre également comment le Sigkill est livré au processus 17721 pour le suspendre. Cette fois au lieu de spécifier le nom du signal, je spécifie le numéro de signal renvoyé par le tuer -l Commande, dans ce cas, 19 pour le signal Sigstop.

tuer -19

La capture d'écran suivante montre comment spécifier le signal SigCont, en utilisant également son numéro au lieu de son nom.

tuer -18

Comme vous pouvez le voir, le résultat est le même lors de l'utilisation du nom ou du numéro du signal.

Comme indiqué précédemment, le signal Sigkill est utilisé pour terminer complètement un processus; C'est probablement le signal le plus utilisé par les utilisateurs.

Comme vous pouvez le voir dans l'exemple ci-dessous, dans lequel Sigkill est implémenté avec son nombre (9), le script a été entièrement terminé ou tué.

tuer -9

Autres signaux importants:

  • Sigint: Ce signal est livré lorsque l'utilisateur demande l'interruption du processus (e.g., Ctrl + c).
  • Igterm: Le signal SIGTERM est livré pour demander une résiliation du processus, mais seulement pour demander et non à résilier. Contrairement à Sigkill ou Sigstop, ce signal peut être manipulé, bloqué ou ignoré.
  • SceauL: Ce signal est utilisé pour terminer les processus comme la cause d'une erreur telle que l'opération ou les erreurs d'exécution. Ce signal ne peut pas être ignoré.
  • Sigchld: Utilisé pour informer les processus parents sur les événements des processus enfants.
  • Faire un coup de pouce: Ce signal est déclenché lorsque la connexion est brusquement interrompue.
  • Tuyau: Ce signal est envoyé aux processus essayant d'écrire à un tuyau sans extrémité de lecture ou qui ne peut pas être lu.
  • Sigquit: Ce signal est similaire à Sigint mais produit un dépotoir central.

Conclusion:

L'utilisation de signaux Linux pour tuer, arrêter, faire une pause, entre autres fonctions, est une connaissance de base que tout utilisateur Linux doit tenir. Une connaissance approfondie des signaux est particulièrement pertinente pour les programmeurs qui doivent s'assurer que les gestionnaires de signaux ne produisent pas d'effets indésirables sur le système. Comme vous pouvez le voir, il existe des dizaines de signaux disponibles; Ce tutoriel se concentrait uniquement sur les plus courants. Vous pouvez obtenir plus d'informations sur les signaux Linux sur https: // www.gnou.org / logiciel / libc / manual / html_node / standard-signals.html.

Merci d'avoir lu l'indice de Linux; Continuez à nous suivre pour plus de conseils et de tutoriels Linux.