SIGTERM con un atajo de teclado

41

Sé que dentro de una terminal, el atajo de teclado Ctrl+ Cenviará una SIGINTseñal al proceso actual en primer plano. ¿Hay alguna manera de configurar un atajo de teclado para enviar SIGTERMo incluso SIGKILLal proceso actual? Creo que podría ahorrarme algo de tiempo.

Estoy corriendo Ubuntu 11.04

julkiewicz
fuente
Relevante: unix.stackexchange.com/q/362559/43390
Ioannis Filippidis

Respuestas:

24

stty es responsable de controlar esto, es posible que ya tenga una configuración. Puede verificar haciendo:

$ 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      

Las últimas líneas deberían resultarle familiares, ^ C = intr es la que mencionó en su pregunta. Puede leer cómo configurar más a través de:

$ man stty
polinomio
fuente
13
$ stty -ees BSD , para uso de Ubuntu $ stty -a, para ver:intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D;
dukedave
1
Estoy interesado en conectar una señal para el estado, por lo que me pregunto acerca de la pulsación de tecla 'estado', "ctrl- @". ¿Es eso una señal?
Andrew Wolfe
1
El atajo ^\ envía SIGQUIT.
Ioannis Filippidis
17

Sé que dentro de un terminal, el atajo de teclado Ctrl+ Cenviará una señal SIGINT al proceso actual en primer plano.

Su conocimiento es incorrecto en dos puntos:

  1. La señal se envía al grupo de procesos en primer plano .
  2. Es solo CTRL+ Csi ese es el carácter especial que está configurado en ese momento. (Ese es el valor predeterminado en la mayoría de los sistemas modernos, pero históricamente podría haber sido el DELpersonaje u otra cosa).

¿Hay alguna manera de configurar un atajo de teclado para enviar SIGTERM o incluso SIGKILL al proceso actual?

No. La disciplina de línea controla qué señales se envían, y esas señales están cableadas. Ellos son (en un estándar de Unix) SIGHUP, SIGINT, SIGTTOU, SIGTTIN, SIGQUIT, y SIGTSTP. No hay otros generados por la disciplina de línea.

JdeBP
fuente
13

El conjunto de señales disponibles para un tty son SIGINT( Ctrl+ C), SIGTSTP( Ctrl+ Z) y SIGQUIT( Ctrl+ \). Puede asignarles diferentes caracteres, pero esas son las únicas señales disponibles. Para sus propósitos, puede usar Ctrl+ \para enviar SIGQUIT, aunque actúa como un error y causa un volcado de núcleo de forma predeterminada. Puede usar el sttycomando para ver y cambiar la configuración.

Chris Page
fuente
1
Tuve que buscar sorprendentemente largo para encontrar el atajo Ctrl + \ nuevamente. ¡Muchas gracias! Esto es muy útil ya que todavía funciona cuando el proceso no reacciona a Ctrl + C.
luator