SIGTERM mit einer Tastenkombination

41

Ich weiß, dass innerhalb eines Terminals Ctrl+ eine CTastenkombination ein SIGINTSignal an den aktuellen Vordergrundprozess sendet . Gibt es eine Möglichkeit, eine Tastenkombination zum Senden SIGTERModer sogar SIGKILLzum aktuellen Vorgang einzurichten? Ich denke, es könnte mir etwas Zeit sparen.

Ich renne Ubuntu 11.04

julkiewicz
quelle
Relevant: unix.stackexchange.com/q/362559/43390
Ioannis Filippidis

Antworten:

24

stty ist dafür verantwortlich, dies zu kontrollieren. Möglicherweise haben Sie bereits ein Setup. Sie können Folgendes überprüfen:

$ 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      

Die letzten Zeilen sollten vertraut aussehen. ^ C = intr ist diejenige, die Sie in Ihrer Frage erwähnt haben. Sie können lesen, wie Sie weitere Einstellungen vornehmen können:

$ man stty
Polynom
quelle
13
$ stty -eist BSD , für Ubuntu $ stty -a, um zu sehen:intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D;
dukedave
1
Ich bin daran interessiert, ein Signal für den Status einzuhaken, also frage ich mich über den Tastendruck "ctrl- @" für den Status. Ist das ein Signal?
Andrew Wolfe
1
Die Verknüpfung ^\ sendet SIGQUIT.
Ioannis Filippidis
17

Ich weiß, dass innerhalb eines Terminals mit der Tastenkombination Ctrl+ Cein SIGINT-Signal an den aktuellen Vordergrundprozess gesendet wird.

Ihr Wissen ist in zwei Punkten falsch:

  1. Das Signal wird in den Vordergrund gesendet Prozessgruppe .
  2. Es ist nur CTRL+, Cwenn dies das Sonderzeichen ist, das gerade konfiguriert wird. (Das ist die Standardeinstellung auf den meisten modernen Systemen, aber historisch könnte es der DELCharakter oder etwas anderes gewesen sein.)

Gibt es eine Möglichkeit, eine Tastenkombination zum Senden von SIGTERM oder sogar SIGKILL an den aktuellen Prozess einzurichten?

Nein. Die Leitungsdisziplin steuert, welche Signale gesendet und welche fest verdrahtet werden. Sie sind (in einem Standard - Unix) SIGHUP, SIGINT, SIGTTOU, SIGTTIN, SIGQUIT, und SIGTSTP. Es gibt keine anderen, die von der Liniendisziplin generiert wurden.

JdeBP
quelle
13

Die verfügbaren Signale für ein Tty sind SIGINT( Ctrl+ C), SIGTSTP( Ctrl+ Z) und SIGQUIT( Ctrl+ \). Sie können ihnen verschiedene Zeichen zuweisen, aber dies sind die einzigen verfügbaren Signale. Für Ihre Zwecke können Sie möglicherweise Ctrl+ \zum Senden verwenden SIGQUIT, obwohl dies wie ein Fehler wirkt und standardmäßig einen Core-Dump verursacht. Mit dem sttyBefehl können Sie die Einstellungen anzeigen und ändern.

Chris Page
quelle
1
Ich musste überraschend lange suchen, um die Tastenkombination Strg + \ wieder zu finden. Vielen Dank! Dies ist sehr nützlich, da es immer noch funktioniert, wenn der Prozess nicht auf Strg + C reagiert.
Luator