SIGTERM พร้อมแป้นพิมพ์ลัด


41

ฉันรู้ว่าภายในเทอร์มินัลแป้นพิมพ์ลัดCtrl+ Cจะส่งSIGINTสัญญาณไปยังกระบวนการทำงานเบื้องหน้าปัจจุบัน มีวิธีการตั้งค่าแป้นพิมพ์ลัดสำหรับส่งSIGTERMหรือแม้กระทั่งSIGKILLกระบวนการปัจจุบันหรือไม่? ฉันคิดว่ามันช่วยฉันได้สักพัก

ฉันกำลังวิ่ง Ubuntu 11.04


ที่เกี่ยวข้อง: unix.stackexchange.com/q/362559/43390
Ioannis Filippidis

คำตอบ:


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
ฉันสนใจที่จะขอสัญญาณสถานะเพื่อให้ฉันสงสัยเกี่ยวกับการกดแป้น 'สถานะ', "ctrl- @" นั่นเป็นสัญญาณหรือไม่?
Andrew Wolfe

1
ทางลัดส่ง^\ SIGQUIT
Ioannis Filippidis

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
luator
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.