คำถามติดแท็ก sigterm

9
เป็นไปได้หรือไม่ที่จะจับสัญญาณ Ctrl + C และเรียกใช้ฟังก์ชั่นการล้างข้อมูลในแบบ "เลื่อน"
ฉันต้องการจับสัญญาณCtrl+C( SIGINT) ที่ส่งจากคอนโซลและพิมพ์ผลรวมการวิ่งบางส่วน เป็นไปได้ไหมที่ Golang? หมายเหตุ: เมื่อครั้งแรกที่ผมโพสต์คำถามที่ผมสับสนเกี่ยวกับCtrl+Cการเป็นแทนSIGTERMSIGINT
207 signals  go  sigterm 

7
วิธีการประมวลผลสัญญาณ SIGTERM อย่างสง่างาม?
สมมติว่าเรามีดีมอนตัวเล็ก ๆ เขียนในไพ ธ อน: def mainloop(): while True: # 1. do # 2. some # 3. important # 4. job # 5. sleep mainloop() และเรา daemonize โดยใช้start-stop-daemonซึ่งเริ่มต้นโดยส่งSIGTERM( TERM) --stopสัญญาณ #2สมมติว่าขั้นตอนการดำเนินการในปัจจุบันมี และในขณะนี้เรากำลังส่งTERMสัญญาณ สิ่งที่เกิดขึ้นคือการกระทำนั้นสิ้นสุดลงทันที ฉันพบว่าฉันสามารถจัดการเหตุการณ์สัญญาณใช้แต่สิ่งที่เป็นว่ามันยังคงขัดจังหวะการดำเนินการในปัจจุบันและผ่านการควบคุมไปsignal.signal(signal.SIGTERM, handler)handler ดังนั้นคำถามของฉันคือ - เป็นไปได้หรือไม่ที่จะไม่ขัดจังหวะการทำงานปัจจุบัน แต่จัดการTERMสัญญาณในเธรดที่แยกจากกัน (?) เพื่อให้ฉันสามารถตั้งค่าshutdown_flag = Trueเพื่อให้mainloop()มีโอกาสหยุดอย่างสง่างาม?

7
ฉันควรส่งสัญญาณไปยังกระบวนการปิดระบบอย่างสง่างามในลำดับใด
ในความคิดเห็นเกี่ยวกับคำตอบของคำถามอื่นผู้แสดงความคิดเห็นกล่าวว่า: อย่าใช้ kill -9 เว้นแต่จำเป็นจริงๆ! SIGKILL ไม่สามารถติดกับดักได้ดังนั้นโปรแกรมที่ถูกฆ่าจึงไม่สามารถรันขั้นตอนการปิดระบบใด ๆ เพื่อลบไฟล์ชั่วคราว ขั้นแรกให้ลองใช้ HUP (1) จากนั้น INT (2) จากนั้นจึง QUIT (3) ฉันเห็นด้วยในหลักการเกี่ยวกับSIGKILLแต่ส่วนที่เหลือเป็นข่าวสำหรับฉัน เนื่องจากสัญญาณเริ่มต้นที่ส่งมาkillคือSIGTERMฉันคาดว่าจะเป็นสัญญาณที่คาดหวังมากที่สุดสำหรับการปิดกระบวนการโดยพลการอย่างสง่างาม นอกจากนี้ฉันพบว่ามีการSIGHUPใช้ด้วยเหตุผลที่ไม่ยุติเช่นการบอก daemon ว่า "อ่านไฟล์ config ของคุณอีกครั้ง" และสำหรับฉันแล้วดูเหมือนว่าSIGINT(การขัดจังหวะแบบเดียวกับที่คุณมักจะได้รับจาก Ctrl-C ใช่ไหม) ไม่ได้รับการสนับสนุนอย่างกว้างขวางเท่าที่ควรหรือยุติอย่างไม่น่าเคารพ ระบุว่าSIGKILLเป็นทางเลือกสุดท้าย - คุณควรส่งสัญญาณใดและในลำดับใดไปยังกระบวนการตามอำเภอใจเพื่อที่จะปิดมันลงอย่างสง่างามที่สุด โปรดยืนยันคำตอบของคุณพร้อมข้อมูลสนับสนุน (นอกเหนือจากความชอบส่วนตัวหรือความคิดเห็น) หรือข้อมูลอ้างอิงหากทำได้ หมายเหตุ: ฉันสนใจแนวทางปฏิบัติที่ดีที่สุดซึ่งรวมถึงการพิจารณา bash / Cygwin เป็นพิเศษ แก้ไข:จนถึงตอนนี้ดูเหมือนจะไม่มีใครพูดถึง INT หรือ QUIT และมีการกล่าวถึง HUP อย่าง จำกัด …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.