<ก่อนหน้านี้ | Contents | ถัดไป>
การส่งสัญญาณไปยังการประมวลผลด้วยการฆ่า
การขอ ฆ่า คำสั่งใช้สำหรับส่งสัญญาณไปยังโปรแกรม ไวยากรณ์ที่พบบ่อยที่สุดมีลักษณะดังนี้:
ฆ่า [-สัญญาณ] พีไอดี...
ฆ่า [-สัญญาณ] พีไอดี...
หากไม่มีการระบุสัญญาณบนบรรทัดรับคำสั่ง แสดงว่า ระยะ (ยุติ) สัญญาณจะถูกส่งโดยค่าเริ่มต้น NS ฆ่า คำสั่งมักใช้เพื่อส่งสัญญาณต่อไปนี้:
ตาราง 10-4: สัญญาณทั่วไป
จำนวน | ชื่อ | ความหมาย |
1 | หุบ | วางสาย. นี่คือร่องรอยของวันเก่า ๆ ที่ดีเมื่อต่อขั้วกับรีโมท |
คอมพิวเตอร์ที่มีสายโทรศัพท์และโมเด็ม สัญญาณนี้ใช้เพื่อระบุโปรแกรมที่เทอร์มินัลควบคุม "วางสาย" ผลของสัญญาณนี้สามารถแสดงให้เห็นได้โดยการปิดเทอร์มินัลเซสชัน โปรแกรมเบื้องหน้าที่ทำงานบนเทอร์มินัลจะส่งสัญญาณและจะยุติลง | ||
สัญญาณนี้ยังถูกใช้โดยโปรแกรม daemon จำนวนมากเพื่อทำให้เกิดการเริ่มต้นใหม่ ซึ่งหมายความว่าเมื่อมีการส่งสัญญาณนี้ daemon จะรีสตาร์ทและอ่านไฟล์การกำหนดค่าอีกครั้ง เว็บเซิร์ฟเวอร์ Apache เป็นตัวอย่างของภูตที่ใช้ หุบ สัญญาณในลักษณะนี้ | ||
2 | INT | ขัดจังหวะ. ทำหน้าที่เหมือนกับ the Ctrl-c คีย์ที่ส่งจากเทอร์มินัล มันมักจะยุติโปรแกรม |
9 | ฆ่า | ฆ่า. สัญญาณนี้เป็นสัญญาณพิเศษ ในขณะที่โปรแกรมอาจเลือกที่จะจัดการกับสัญญาณที่ส่งถึงพวกเขาในรูปแบบต่างๆ รวมถึงการละเว้นทั้งหมดเข้าด้วยกัน ฆ่า สัญญาณจะไม่ถูกส่งจริงไปยังโปรแกรมเป้าหมาย แต่เคอร์เนลจะยุติกระบวนการทันที เมื่อกระบวนการสิ้นสุดลงในลักษณะนี้ จะไม่มีโอกาส "ล้าง" หลังจากตัวเองหรือบันทึกงาน ด้วยเหตุนี้ ฆ่า ควรใช้สัญญาณเป็นทางเลือกสุดท้ายเมื่อสัญญาณการสิ้นสุดอื่นๆ ล้มเหลวเท่านั้น |
15 | ระยะ | ยุติ. นี่คือสัญญาณเริ่มต้นที่ส่งโดย ฆ่า สั่งการ. หากโปรแกรมยังคง "มีชีวิตอยู่" มากพอที่จะรับสัญญาณ โปรแกรมจะยุติลง |
18 | ต่อ | ดำเนินการต่อ. การดำเนินการนี้จะคืนค่ากระบวนการหลังจาก a STOP ส่งสัญญาณ |
19 | STOP | หยุด. สัญญาณนี้ทำให้กระบวนการหยุดชั่วคราวโดยไม่ยุติ ชอบ ฆ่า สัญญาณจะไม่ถูกส่งไปยังกระบวนการเป้าหมายและไม่สามารถละเลยได้ |
มาลองกัน ฆ่า คำสั่ง:
[me@linuxbox ~]$ xlogo &
[เอกสารเก่า] ฮิต
[me@linuxbox ~]$ ฆ่า - 1 13546
[1]+ วางสาย xlogo
[me@linuxbox ~]$ xlogo &
[เอกสารเก่า] ฮิต
[me@linuxbox ~]$ ฆ่า - 1 13546
[1]+ วางสาย xlogo
ในตัวอย่างนี้ เราเริ่ม xlogo โปรแกรมในพื้นหลังแล้วส่ง หุบ ส่งสัญญาณด้วย ฆ่าส่วน xlogo โปรแกรมสิ้นสุดลงและเชลล์ระบุว่ากระบวนการแบ็คกราวด์ได้รับสัญญาณวางสาย เราอาจต้องกดปุ่ม Enter สองครั้งก่อนที่ข้อความจะปรากฏขึ้น โปรดทราบว่าสัญญาณอาจระบุด้วยตัวเลขหรือตามชื่อ รวมทั้งชื่อที่นำหน้าด้วยตัวอักษร “SIG”:
[me@linuxbox ~]$ xlogo &
[เอกสารเก่า] ฮิต
[me@linuxbox ~]$ ฆ่า -INT 13601 [1]+ ขัดจังหวะ xlogo [me@linuxbox ~]$ xlogo &
[เอกสารเก่า] ฮิต
[me@linuxbox ~]$ ฆ่า -SIGINT 13608
[1]+ ขัดจังหวะ xlogo
[me@linuxbox ~]$ xlogo &
[เอกสารเก่า] ฮิต
[me@linuxbox ~]$ ฆ่า -INT 13601 [1]+ ขัดจังหวะ xlogo [me@linuxbox ~]$ xlogo &
[เอกสารเก่า] ฮิต
[me@linuxbox ~]$ ฆ่า -SIGINT 13608
[1]+ ขัดจังหวะ xlogo
ทำซ้ำตัวอย่างด้านบนและลองใช้สัญญาณอื่นๆ โปรดจำไว้ว่า เรายังใช้ข้อกำหนดเฉพาะของงานแทน PID ได้
กระบวนการเช่นไฟล์มีเจ้าของและคุณต้องเป็นเจ้าของกระบวนการ (หรือผู้ยิ่งใหญ่) เพื่อส่งสัญญาณด้วย ฆ่า.
นอกเหนือจากรายการสัญญาณด้านบนซึ่งส่วนใหญ่มักใช้กับ ฆ่ามีสัญญาณอื่นๆ ที่ระบบใช้บ่อย นี่คือรายการสัญญาณทั่วไปอื่นๆ:
ตาราง 10-5: สัญญาณทั่วไปอื่นๆ
จำนวน | ชื่อ | ความหมาย |
3 | เลิก | เลิก. |
11 | เอสอีจีวี | การละเมิดการแบ่งส่วน สัญญาณนี้จะถูกส่งไปหากโปรแกรมใช้หน่วยความจำอย่างผิดกฎหมาย กล่าวคือ มันพยายามเขียนในที่ที่ไม่ได้รับอนุญาต |
20 | สสวท | เทอร์มินัลหยุด นี่คือสัญญาณที่เครื่องปลายทางส่งเมื่อ Ctrl-z กดปุ่ม ไม่เหมือนกับ STOP สัญญาณ สสวท รับสัญญาณโดย |
โปรแกรมแต่โปรแกรมอาจเลือกเพิกเฉย
28 WINCH เปลี่ยนหน้าต่าง นี่คือสัญญาณที่ส่งโดย
ระบบเมื่อหน้าต่างเปลี่ยนขนาด บางโปรแกรม เช่น ด้านบน และ น้อยลง จะตอบสนองต่อสัญญาณนี้โดยวาดตัวเองใหม่เพื่อให้พอดีกับขนาดหน้าต่างใหม่
สำหรับผู้อยากรู้อยากเห็น สามารถดูรายการสัญญาณทั้งหมดได้ด้วยคำสั่งต่อไปนี้:
[me@linuxbox ~]$ ฆ่า -l
[me@linuxbox ~]$ ฆ่า -l