SIGTERM con una scorciatoia da tastiera


41

So che all'interno di un terminale, Ctrl+ la Cscorciatoia da tastiera invierà un SIGINTsegnale al processo in primo piano corrente. C'è un modo per impostare una scorciatoia da tastiera per l'invio SIGTERMo anche SIGKILLper il processo corrente? Penso che potrebbe farmi risparmiare un po 'di tempo.

sto correndo Ubuntu 11.04


Risposte:


24

stty è responsabile per il controllo di questo, potresti già avere una configurazione. Puoi controllare facendo:

$ 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      

Le ultime righe dovrebbero apparire familiari, ^ C = intr è quella che hai menzionato nella tua domanda. Puoi leggere come impostare di più tramite:

$ man stty

13
$ stty -eè BSD , per usare Ubuntu $ stty -a, per vedere:intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D;
dukedave,

1
Sono interessato a collegare un segnale per lo stato, quindi mi chiedo la sequenza di tasti "status", "ctrl- @". È un segnale?
Andrew Wolfe,

1
Il collegamento ^\ invia SIGQUIT.
Ioannis Filippidis,

17

So che all'interno di un terminale, Ctrl+ la Cscorciatoia da tastiera invierà un segnale SIGINT all'attuale processo in primo piano.

La tua conoscenza non è corretta su due punti:

  1. Il segnale viene inviato al gruppo di processi in primo piano .
  2. È solo CTRL+ Cse questo è il carattere speciale che sembra essere configurato in quel momento. (Questo è il default sulla maggior parte dei sistemi moderni, ma storicamente avrebbe potuto essere il DELpersonaggio o qualcos'altro.)

C'è un modo per impostare una scorciatoia da tastiera per inviare SIGTERM o persino SIGKILL al processo corrente?

No. La disciplina di linea controlla quali segnali vengono inviati e tali segnali sono cablati. Sono (in uno standard Unix) SIGHUP, SIGINT, SIGTTOU, SIGTTIN, SIGQUIT, e SIGTSTP. Non ce ne sono altri generati dalla disciplina di linea.


13

L'insieme dei segnali disponibili per un tty sono SIGINT( Ctrl+ C), SIGTSTP( Ctrl+ Z) e SIGQUIT( Ctrl+ \). Puoi assegnare loro caratteri diversi, ma questi sono gli unici segnali disponibili. Ai tuoi scopi potresti essere in grado di usare Ctrl+ \per inviare SIGQUIT, anche se si comporta come un errore e causa un dump di base per impostazione predefinita. È possibile utilizzare il sttycomando per visualizzare e modificare le impostazioni.


1
Ho dovuto cercare sorprendentemente a lungo per trovare di nuovo la scorciatoia Ctrl + \. Molte grazie! Questo è molto utile in quanto funziona ancora quando il processo non sta reagendo a Ctrl + C.
Luator,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.