SIGTERM с сочетанием клавиш

41

Я знаю, что внутри терминала комбинация клавиш Ctrl+ Cотправит SIGINTсигнал текущему процессу переднего плана. Есть ли способ настроить сочетание клавиш для отправки SIGTERMили даже SIGKILLдля текущего процесса? Я думаю, что это может сэкономить мне время.

я бегу Ubuntu 11.04

julkiewicz
источник
Соответствует: unix.stackexchange.com/q/362559/43390
Иоаннис Филиппидис,

Ответы:

24

Stty отвечает за управление этим, возможно, у вас уже есть одна настройка. Вы можете проверить, выполнив:

$ 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      

Последние несколько строк должны выглядеть знакомо, ^ C = intr - это та, которую вы упомянули в своем вопросе. Вы можете прочитать, как установить больше через:

$ man stty
многочлен
источник
13
$ stty -eэто BSD , для использования Ubuntu $ stty -a, чтобы увидеть:intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D;
Dukedave
1
Я заинтересован в перехвате сигнала статуса, поэтому мне интересно узнать о нажатии клавиши «status», «ctrl- @». Это сигнал?
Эндрю Вулф
1
Ярлык ^\ отправляет SIGQUIT.
Иоаннис Филиппидис
17

Я знаю, что внутри терминала комбинация клавиш Ctrl+ Cотправит сигнал SIGINT текущему процессу переднего плана.

Ваши знания неверны по двум пунктам:

  1. Сигнал отправляется на переднюю группу процессов .
  2. Это только CTRL+, Cесли это специальный символ, который настроен в то время. (Это значение по умолчанию в большинстве современных систем, но исторически это мог быть DELперсонаж или что-то еще.)

Есть ли способ настроить сочетание клавиш для отправки SIGTERM или даже SIGKILL в текущий процесс?

Нет. Линейная дисциплина контролирует, какие сигналы отправляются, и эти сигналы зашиты. Они (в стандарте Unix) SIGHUP, SIGINT, SIGTTOU, SIGTTIN, SIGQUIT, и SIGTSTP. Нет других, порожденных дисциплиной линии.

JdeBP
источник
13

Набор доступных сигналов для tty: SIGINT( Ctrl+ C), SIGTSTP( Ctrl+ Z) и SIGQUIT( Ctrl+ \). Вы можете назначать им разные символы, но это единственные доступные сигналы. Для ваших целей вы можете использовать Ctrl+ \для отправки SIGQUIT, хотя это действует как ошибка и по умолчанию вызывает дамп памяти. Вы можете использовать sttyкоманду, чтобы увидеть и изменить настройки.

Крис Пейдж
источник
1
Мне пришлось искать удивительно долго, чтобы снова найти ярлык Ctrl + \. Большое спасибо! Это очень полезно, поскольку все еще работает, когда процесс не реагирует на Ctrl + C.
луатор