Shepherd สามารถใช้ทั้งเป็นระบบการเริ่มต้นหลัก (เริ่มต้นด้วย PID 1) และในรูปแบบแยกต่างหากเพื่อจัดการกระบวนการพื้นหลังของผู้ใช้แต่ละราย (เช่น เพื่อเรียกใช้ Tor, Privoxy, mcron ฯลฯ ) ด้วยการดำเนินการที่มีสิทธิ์ของ ผู้ใช้เหล่านี้ Shepherd ทำงานในการเริ่มและหยุดบริการโดยคำนึงถึงความสัมพันธ์ระหว่างบริการ ระบุและเริ่มบริการแบบไดนามิกที่บริการที่เลือกขึ้นอยู่กับ Shepherd ยังสนับสนุนการตรวจจับข้อขัดแย้งระหว่างบริการและป้องกันไม่ให้ทำงานพร้อมกัน
นวัตกรรมหลัก:
- Make-kill-destructor ดำเนินการฆ่ากลุ่มของกระบวนการ
- เพิ่มพารามิเตอร์ "default-pid-file-timeout" ซึ่งกำหนดเวลารอสำหรับการสร้างไฟล์ PID
- หากไฟล์ PID ไม่ปรากฏขึ้นภายในระยะหมดเวลา กลุ่มกระบวนการทั้งหมดจะถูกยกเลิก (ตัดสินใจ
ปัญหา ปล่อยให้กระบวนการทำงานไม่มีไฟล์ PID) - เพิ่มพารามิเตอร์ “#:file-creation-mask” ให้กับ “make-forkexec-constructor” ใช้การสร้างไฟล์บันทึก และหยุดรองรับรูปแบบการโทรแบบเก่า
- แก้ไขปัญหาเกี่ยวกับการคอมไพล์บนระบบที่ไม่มี prctl เช่น GNU/Hurd
- แก้ไขปัญหาที่ทำให้ SIGALRM ถูกส่งทุกวินาที
ที่มา: opennet.ru