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


41

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

я бегу Ubuntu 11.04


Ответы:


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. Нет других, порожденных дисциплиной линии.


13

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


1
Мне пришлось искать удивительно долго, чтобы снова найти ярлык Ctrl + \. Большое спасибо! Это очень полезно, поскольку все еще работает, когда процесс не реагирует на Ctrl + C.
луатор
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.