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.