Skip to main content

Signal - Commande Linux / Unix

11-Commande linux kill #darija (Avril 2025)

11-Commande linux kill #darija (Avril 2025)
Anonim

Linux supporte à la fois les signaux fiables POSIX (ci-après "signaux standard") et les signaux POSIX en temps réel.

Signaux Standard

Linux supporte les signaux standard listés ci-dessous. Plusieurs numéros de signal dépendent de l'architecture, comme indiqué dans la colonne "Valeur". (Lorsque trois valeurs sont données, la première est généralement valable pour alpha et sparc, la moyenne pour i386, ppc et sh et la dernière pour mips.

A - indique qu'un signal est absent sur l'architecture correspondante.)

Les entrées de la colonne "Action" du tableau spécifient l'action par défaut pour le signal, comme suit:

Terme

L'action par défaut consiste à terminer le processus.

Ign

L'action par défaut consiste à ignorer le signal.

Coeur

L'action par défaut consiste à terminer le processus et à vider le noyau.

Arrêtez

L'action par défaut consiste à arrêter le processus.

Tout d’abord, les signaux décrits dans la norme POSIX.1 d’origine.

SignalValeuractionCommentaire
ou la mort du processus de contrôle
SIGINT2TermeInterruption du clavier
SIGQUIT3CoeurQuitter du clavier
SIGILL4CoeurInstruction illégale
SIGABRT6CoeurAbandonner le signal de avorter (3)
SIGFPE8CoeurException en virgule flottante
SIGKILL9TermeTuer le signal
SIGSEGV11CoeurRéférence mémoire invalide
SIGPIPE13TermePipe cassée: écrivez dans la pipe sans lecteur
SIGALRM14TermeSignal de minuterie de alarme (2)
SIGTERM15TermeSignal de terminaison
SIGUSR130,10,16TermeSignal défini par l'utilisateur 1
SIGUSR231,12,17TermeSignal défini par l'utilisateur 2
SIGCHLD20,17,18IgnEnfant arrêté ou terminé
SIGCONT19,18,25 Continuer si arrêté
SIGSTOP17,19,23ArrêtezArrêter le processus
SIGTSTP18,20,24ArrêtezArrête de taper au tty
SIGTTIN21,21,26Arrêtezentrée tty pour le processus d'arrière-plan
SIGTTOU22,22,27Arrêtezsortie tty pour le traitement en arrière-plan

Les signauxSIGKILL etSIGSTOP ne peut pas être attrapé, bloqué ou ignoré.

Ensuite, les signaux ne sont pas dans la norme POSIX.1 mais décrits dans SUSv2 et SUSv3 / POSIX 1003.1-2001.

SignalValeuractionCommentaire
SIGPOLL TermeEvénement pollable (Sys V). Synonyme de SIGIO
SIGPROF27,27,29TermeProfiler minuterie expiré
SIGSYS12,-,12CoeurMauvais argument de routine (SVID)
SIGTRAP5CoeurTraçage / point d'arrêt
SIGURG16,23,21IgnCondition urgente sur le socket (4.2 BSD)
SIGVTALRM26,26,28TermeRéveil virtuel (4.2 BSD)
SIGXCPU24,24,30CoeurLimite de temps CPU dépassée (4.2 BSD)
SIGXFSZ25,25,31CoeurLimite de taille de fichier dépassée (4.2 BSD)

Jusqu’à Linux 2.2 inclus, le comportement par défaut pourSIGSYS, SIGXCPU, SIGXFSZ, et (sur les architectures autres que SPARC et MIPS)SIGBUS était de mettre fin au processus (sans vidage de mémoire). (Sur d’autres Unices, l’action par défaut pourSIGXCPU etSIGXFSZ Pour terminer le processus sans vidage principal.) Linux 2.4 est conforme aux exigences POSIX 1003.1-2001 pour ces signaux et termine le processus par un vidage principal.

Suivant divers autres signaux.

SignalValeuractionCommentaire
SIGEMT7,-,7Terme
SIGSTKFLT-,16,-TermeDéfaut de pile sur le coprocesseur (non utilisé)
SIGIO23,29,22TermeE / S maintenant possible (4.2 BSD)
SIGCLD-,-,18IgnUn synonyme de SIGCHLD
SIGPWR29,30,19TermePanne de courant (System V)
SIGINFO29,-,- Un synonyme de SIGPWR
SIGLOST-,-,-TermeVerrouillage de fichier perdu
SIGWINCH28,28,20IgnSignal de redimensionnement de la fenêtre (4.3 BSD, Sun)
Sigunus-,31,-TermeSignal non utilisé (sera SIGSYS)

(Le signal 29 estSIGINFO / SIGPWR sur un alpha maisSIGLOST sur un sparc.)

SIGEMT n’est pas spécifié dans POSIX 1003.1-2001, mais apparaît néanmoins sur la plupart des autres Unices, où son action par défaut consiste généralement à mettre fin au processus avec un vidage principal.

SIGPWR (qui n'est pas spécifié dans POSIX 1003.1-2001) est généralement ignoré par défaut sur les autres Unices où il apparaît.

SIGIO (qui n'est pas spécifié dans POSIX 1003.1-2001) est ignoré par défaut sur plusieurs autres Unices.

Signaux en temps réel

Linux prend en charge les signaux en temps réel tels que définis à l'origine dans les extensions en temps réel POSIX.4 (et désormais inclus dans POSIX 1003.1-2001). Linux prend en charge 32 signaux en temps réel, numérotés à partir de 32 (SIGRTMIN) à 63 (SIGRTMAX). (Les programmes doivent toujours se référer aux signaux en temps réel en utilisant la notationSIGRTMIN+ n, car la plage de numéros de signaux en temps réel varie selon les unités.)

Contrairement aux signaux standard, les signaux en temps réel n'ont pas de signification prédéfinie: l'ensemble des signaux en temps réel peut être utilisé à des fins définies par l'application. (Notez cependant que l'implémentation LinuxThreads utilise les trois premiers signaux en temps réel.)

L'action par défaut pour un signal en temps réel non géré consiste à mettre fin au processus de réception.

Les signaux en temps réel se distinguent par les éléments suivants:

  1. Plusieurs instances de signaux en temps réel peuvent être mises en file d'attente. En revanche, si plusieurs instances d'un signal standard sont délivrées alors que ce signal est actuellement bloqué, une seule instance est mise en file d'attente.
  2. Si le signal est envoyé en utilisantsigqueue(2), une valeur associée (un entier ou un pointeur) peut être envoyée avec le signal. Si le processus de réception établit un gestionnaire pour ce signal en utilisant leSA_SIGACTION drapeau àsigaction(2) il peut ensuite obtenir ces données via le si_value domaine de la siginfo_t structure passée en tant que deuxième argument au gestionnaire. En outre, le si_pid et si_uid Les champs de cette structure peuvent être utilisés pour obtenir le PID et l'ID utilisateur réel du processus qui envoie le signal.
  3. Les signaux en temps réel sont livrés dans un ordre garanti. Plusieurs signaux en temps réel du même type sont livrés dans l'ordre dans lequel ils ont été envoyés. Si différents signaux en temps réel sont envoyés à un processus, ils sont livrés en commençant par le signal le plus petit. (C'est-à-dire que les signaux de petit nombre ont la priorité la plus haute.)

Si des signaux standard et en temps réel sont en attente pour un processus, POSIX laisse indéterminé le premier élément à livrer. Linux, comme beaucoup d’autres implémentations, donne la priorité aux signaux standard dans ce cas.

Selon POSIX, une implémentation devrait permettre au moins _POSIX_SIGQUEUE_MAX (32) signaux en temps réel d'être mis en file d'attente dans un processus. Cependant, plutôt que de définir une limite par processus, Linux impose une limite au système pour le nombre de signaux en temps réel mis en file d'attente pour tous les processus.

Cette limite peut être vue (et avec privilège) modifiée via le / proc / sys / kernel / rtsig-max fichier. Un fichier associé, / proc / sys / kernel / rtsig-max , peut être utilisé pour savoir combien de signaux en temps réel sont actuellement en file d'attente.

SE CONFORMER À

POSIX.1

Important: Utilisez le homme commande ( % homme ) pour voir comment une commande est utilisée sur votre ordinateur.