59 votes

SIGTERM avec un raccourci clavier

Je sais que dans un terminal, le raccourci clavier Ctrl+C enverra un signal SIGINT au processus en premier plan. Existe-t-il un moyen de configurer un raccourci clavier pour envoyer un SIGTERM ou même un SIGKILL au processus en cours? Je pense que ça pourrait me faire gagner du temps.

Je suis sous Ubuntu 11.04

29voto

polynomial Points 1474

Stty est responsable de contrôler cela, vous avez peut-être déjà une configuration. Vous pouvez vérifier en faisant :

$ stty -e
speed 38400 baud; 53 rangées; 225 colonnes;
lflags: icanon isig iexten echo echoe echok echoke -echonl echoctl
        -echoprt -altwerase -noflsh -tostop -flusho pendin -nokerninfo
        -extproc
iflags: -istrip icrnl -inlcr -igncr ixon -ixoff -ixany imaxbel -iutf8
        -ignbrk brkint -inpck ignpar -parmrk
oflags: opost onlcr -oxtabs -onocr -onlret
cflags: cread cs8 -parenb -parodd -hupcl -clocal -cstopb -crtscts
        -dsrflow -dtrflow -mdmbuf
discard dsusp   eof     eol     eol2    erase   intr    kill    lnext   
^O      ^Y      ^D        ^?      ^C      ^U      ^V      
min     quit    reprint start   status  stop    susp    time    werase  
1       ^\      ^R      ^Q      ^@      ^S      ^Z      0       ^W      

Les dernières lignes devraient vous sembler familières, ^C=intr est celui que vous avez mentionné dans votre question. Vous pouvez en apprendre davantage sur la configuration via :

$ man stty

21voto

Chris Page Points 3113

L'ensemble des signaux disponibles pour un tty sont SIGINT (Ctrl+C), SIGTSTP (Ctrl+Z) et SIGQUIT (Ctrl+\). Vous pouvez leur attribuer des caractères différents, mais ce sont les seuls signaux disponibles. À des fins pratiques, vous pouvez utiliser Ctrl+\ pour envoyer SIGQUIT, bien que cela agisse comme une erreur et provoque une extraction mémoire par défaut. Vous pouvez utiliser la commande stty pour voir et modifier les paramètres.

20voto

JdeBP Points 25711

Je sais qu'à l'intérieur d'un terminal, le raccourci clavier Ctrl+C enverra un signal SIGINT au processus en cours d'exécution en premier plan.

Votre connaissance est incorrecte sur deux points:

  1. Le signal est envoyé au groupe de processus en premier plan.
  2. C'est seulement CTRL+C si c'est le caractère spécial qui est configuré à ce moment-là. (C'est la valeur par défaut sur la plupart des systèmes modernes, mais historiquement cela aurait pu être le caractère DEL ou autre chose.)

Existe-t-il un moyen de configurer un raccourci clavier pour envoyer un SIGTERM voire même un SIGKILL au processus en cours?

Non. La discipline de ligne contrôle quels signaux sont envoyés, et ces signaux sont câblés en dur. Ils sont (dans un Unix standard) SIGHUP, SIGINT, SIGTTOU, SIGTTIN, SIGQUIT, et SIGTSTP. Aucun autre signal n'est généré par la discipline de ligne.

1voto

Josh Correia Points 376

Bien que vous puissiez modifier vos keybindings avec stty -a, il n'est pas possible de créer un keybinding SIGTERM ou SIGKILL qui interagira avec votre processus.

En savoir plus à ce sujet ici.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X