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


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

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.


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.


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.