SIGTERM avec un raccourci clavier

41

Je sais qu'à l'intérieur d'un terminal, un raccourci clavier Ctrl+ Cenverra un SIGINTsignal au processus de premier plan en cours. Est-il possible de configurer un raccourci clavier pour l'envoi SIGTERMou même SIGKILLpour le processus en cours? Je pense que cela pourrait me faire gagner du temps.

je suis entrain de courir Ubuntu 11.04

julkiewicz
la source
Pertinent: unix.stackexchange.com/q/362559/43390
Ioannis Filippidis

Réponses:

24

stty est responsable du contrôle, vous avez peut-être déjà une configuration. Vous pouvez vérifier en faisant:

$ stty -e
speed 38400 baud; 53 rows; 225 columns;
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      <undef> <undef> ^?      ^C      ^U      ^V      
min     quit    reprint start   status  stop    susp    time    werase  
1       ^\      ^R      ^Q      ^@      ^S      ^Z      0       ^W      

Les dernières lignes doivent vous paraître familières, ^ C = intr est celui que vous avez mentionné dans votre question. Vous pouvez lire comment définir plus via:

$ man stty
polynôme
la source
13
$ stty -eest BSD , à utiliser avec Ubuntu $ stty -a, à voir:intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D;
dukedave
1
Je souhaite accrocher un signal pour le statut, alors je m'interroge sur la frappe de "statut", "ctrl- @". Est-ce un signal?
Andrew Wolfe
1
Le raccourci ^\ envoie SIGQUIT.
Ioannis Filippidis
17

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

Votre connaissance est incorrecte sur deux points:

  1. Le signal est envoyé au groupe de processus de premier plan .
  2. C'est seulement CTRL+ Cs'il s'agit du caractère spécial 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 DELpersonnage ou autre chose.)

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

Non. La discipline de ligne contrôle les signaux envoyés et ceux-ci sont câblés. Ils sont (dans une norme Unix) SIGHUP, SIGINT, SIGTTOU, SIGTTIN, SIGQUITet SIGTSTP. Il n'y a pas d'autres générés par la discipline de ligne.

JdeBP
la source
13

L'ensemble des signaux disponibles pour un terminal est SIGINT( Ctrl+ C), SIGTSTP( Ctrl+ Z) et SIGQUIT( Ctrl+ \). Vous pouvez leur attribuer différents caractères, mais ce sont les seuls signaux disponibles. Pour vos besoins, vous pourrez peut-être utiliser Ctrl+ \pour envoyer SIGQUIT, même si cela agit comme une erreur et provoque un vidage mémoire par défaut. Vous pouvez utiliser la sttycommande pour voir et modifier les paramètres.

Chris Page
la source
1
J'ai dû chercher étonnamment longtemps pour retrouver le raccourci Ctrl + \. Merci beaucoup! Ceci est très utile car il fonctionne toujours lorsque le processus ne réagit pas à Ctrl + C.
Luator