2
กำหนดค่าบริการ buggy systemd เพื่อยกเลิกผ่าน SIGKILL
พื้นหลัง ฉันถูกขอให้สร้างsystemdสคริปต์สำหรับบริการใหม่foo_daemonซึ่งบางครั้งอาจเข้าสู่ "สถานะไม่ดี" และจะไม่ตายSIGTERM(อาจเกิดจากตัวจัดการสัญญาณที่กำหนดเอง) นี่เป็นปัญหาสำหรับนักพัฒนาเนื่องจากได้รับคำแนะนำให้เริ่ม / หยุด / เริ่มบริการใหม่ผ่าน: systemctl start foo_daemon.service systemctl stop foo_daemon.service systemctl restart foo_daemon.service ปัญหา บางครั้งเนื่องจากfoo_daemonการเข้าสู่สถานะที่ไม่ดีเราต้องบังคับให้ฆ่าผ่าน: systemctl kill -s KILL foo_daemon.service คำถาม ฉันจะตั้งค่าsystemdสคริปต์ของฉันอย่างไรfoo_daemonเพื่อที่เมื่อใดก็ตามที่ผู้ใช้พยายามหยุด / เริ่มบริการใหม่systemdจะ: พยายามปิดสง่างามของผ่านfoo_daemonSIGTERM ให้มากถึง 2 วินาทีเพื่อให้การปิด / การสิ้นสุดของfoo_daemonเสร็จสมบูรณ์ พยายามปิดการบังคับfoo_daemonผ่านSIGKILLถ้ากระบวนการยังมีชีวิตอยู่ (ดังนั้นเราจึงไม่มีความเสี่ยงที่จะมีการรีไซเคิล PID และsystemdปัญหาSIGKILLต่อ PID ที่ไม่ถูกต้อง) อุปกรณ์ที่เรากำลังทดสอบวางไข่ / แยกกระบวนการจำนวนมากอย่างรวดเร็วดังนั้นจึงมีข้อกังวลที่หายาก แต่แท้จริงเกี่ยวกับการรีไซเคิล PID ที่ก่อให้เกิดปัญหา หากในทางปฏิบัติฉันแค่หวาดระแวงเกี่ยวกับการรีไซเคิล PID ฉันก็โอเคกับสคริปต์ที่ออกมาSIGKILLต่อต้านกระบวนการ …