SIGTERM dengan pintasan keyboard

41

Saya tahu bahwa di dalam terminal, Ctrl+ Cpintasan keyboard akan mengirim SIGINTsinyal ke proses latar depan saat ini. Apakah ada cara untuk mengatur pintasan keyboard untuk mengirim SIGTERMatau bahkan SIGKILLke proses saat ini? Saya pikir itu bisa menghemat waktu saya.

saya sedang berlari Ubuntu 11.04

julkiewicz
sumber
Relevan: unix.stackexchange.com/q/362559/43390
Ioannis Filippidis

Jawaban:

24

stty bertanggung jawab untuk mengendalikan ini, Anda mungkin sudah memiliki satu pengaturan. Anda dapat memeriksa dengan melakukan:

$ 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      

Beberapa baris terakhir seharusnya terlihat familier, ^ C = intr adalah yang Anda sebutkan dalam pertanyaan Anda. Anda dapat membaca cara mengatur lebih banyak melalui:

$ man stty
jumlahnya banyak
sumber
13
$ stty -eadalah BSD , untuk penggunaan Ubuntu $ stty -a, untuk melihat:intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D;
dukedave
1
Saya tertarik mengaitkan sinyal untuk status, jadi saya ingin tahu tentang 'status' penekanan tombol, "ctrl- @". Apakah itu sinyal?
Andrew Wolfe
1
Pintasan ^\ dikirimkan SIGQUIT.
Ioannis Filippidis
17

Saya tahu bahwa di dalam terminal, Ctrl+ Cpintasan keyboard akan mengirim sinyal SIGINT ke proses latar depan saat ini.

Pengetahuan Anda salah tentang dua hal:

  1. Sinyal dikirim ke grup proses latar depan .
  2. Hanya CTRL+ Cjika itu adalah karakter khusus yang akan dikonfigurasi pada saat itu. (Itu standar pada kebanyakan sistem modern, tetapi secara historis bisa jadi DELkarakter atau sesuatu yang lain.)

Apakah ada cara untuk mengatur pintasan keyboard untuk mengirim SIGTERM atau bahkan SIGKILL ke proses saat ini?

Tidak. Garis disiplin mengontrol sinyal apa yang dikirim, dan sinyal itu sudah tertanam. Mereka adalah (dalam standar Unix) SIGHUP, SIGINT, SIGTTOU, SIGTTIN, SIGQUIT, dan SIGTSTP. Tidak ada yang dihasilkan oleh disiplin garis.

JdeBP
sumber
13

Set sinyal yang tersedia untuk tty adalah SIGINT( Ctrl+ C), SIGTSTP( Ctrl+ Z) dan SIGQUIT( Ctrl+ \). Anda dapat menetapkan karakter yang berbeda untuk mereka, tetapi hanya itu sinyal yang tersedia. Untuk keperluan Anda, Anda mungkin dapat menggunakan Ctrl+ \untuk mengirim SIGQUIT, meskipun itu bertindak seperti kesalahan dan menyebabkan dump inti secara default. Anda dapat menggunakan sttyperintah untuk melihat dan mengubah pengaturan.

Chris Page
sumber
1
Saya harus mencari sangat lama untuk menemukan Ctrl + \ shortcut lagi. Terima kasih banyak! Ini sangat berguna karena masih berfungsi saat proses tidak bereaksi terhadap Ctrl + C.
luator