ทางเลือกของ Daemontools (djbtools) เพื่อควบคุมกระบวนการยูนิกซ์?


26

ฉันใช้Daemontoolsเพื่อมอบวิธีที่ง่ายและเชื่อถือได้ในการดูแลบริการ Unix บนเซิร์ฟเวอร์ของฉัน มันใช้งานได้ดี แต่ต้องใช้วิธีคิดที่แตกต่าง ( The DJB Way ) และการร้องเรียนทั่วไปคือ:

  • การประทับเวลาตามTAI64N
  • ไม่เก็บสคริปต์ไว้ใน /etc/init.d (หรือ (/usr/local)/etc/rc.d)
  • ไม่สามารถทำงานกับสคริปต์เช่น apachectl ได้เสมอ สคริปต์บางตัวต้องเขียนใหม่

ฉันจำได้ว่า daemons "ผู้ดูแล / เฝ้าระวัง" ที่คล้ายกันบางอย่างอยู่ในงานประมาณสองปีที่ผ่านมา แต่บางคนก็ยังหยาบรอบขอบ

หากคุณเปลี่ยนจาก Daemontools เป็นอย่างอื่นคุณเลือกอะไรและทำงานได้ดีสำหรับคุณ RedHat หรือ Ubuntu มาพร้อมกับยูทิลิตี้ควบคุมกระบวนการหรือไม่

คำตอบ:


16

อืมถ้าคุณใช้ Ubuntu กระบวนการเริ่มต้นใหม่ของพวกเขาพุ่งพรวดรวมถึงระดับของการกำกับดูแลกระบวนการ สามารถใช้สำหรับการเริ่มต้นและการหยุดให้บริการมาตรฐานสคริปต์เริ่มต้น la SysV และยังสามารถตรวจสอบแอปพลิเคชันที่รันอยู่และตอบกลับหากพวกเขาตาย

คุณสามารถนำกระบวนการของคนยากจนกลับมาใช้ใหม่ผ่านทาง inittab ขึ้นอยู่กับความต้องการของคุณ

หากคุณกำลังมองหาบางสิ่งบางอย่างเพื่อคอยจับตาดูกระบวนการเพื่อให้แน่ใจว่ามันทำงานอยู่ตลอดเวลาและจากนั้นเริ่มใหม่เมื่อมันไม่เป็นเช่นนั้นฉันโชคดีมากที่มีการเริ่มต้นใหม่ น่าเสียดายที่แหล่งเดียวที่ฉันรู้คือแพ็คเกจ Debian อย่างไรก็ตามมันเป็นแอปพลิเคชั่นขนาดเล็กและเรียบง่ายโดยทั่วไปเป็นไฟล์. c และ. h เพียงไฟล์เดียวโดยมีไฟล์ make รวบรวมจาก tarball แหล่ง Debian บน Red Hat เป็นเรื่องเล็กน้อย (ฉันทำ RPM ของมันในงานก่อนหน้าของฉัน)

ตัวเลือกสุดท้ายที่ผมเคยได้ยิน แต่ไม่ได้ใช้เป็นหัวหน้า ดูเหมือนว่าเครื่องมือที่มีแนวโน้ม แต่รีสตาร์ทdทำงานได้ดีพอสำหรับฉันในอดีตสำหรับสิ่งที่ฉันต้องการฉันยังไม่ได้สนใจที่จะเล่นกับมัน


12

+1 สำหรับ runit คุณสมบัติเพิ่มเติมและยืดหยุ่นกว่า daemontools เข้ากันได้กับข้อโต้แย้งและตัวเลือก daemontools ที่มีอยู่ สวยเนี๊ยบ

แต่อย่างที่คุณพูดถึงเครื่องมือจำนวนมากมาพร้อมกับไบนารีควบคุมของตัวเอง apache2ctl, ejabberdctl, poundctl, collectd และอื่น ๆ และแม้ว่าจะมีแฮ็กอยู่บ้างบางครั้งมันก็ดีกว่าที่จะยึดติดกับเครื่องมือที่ให้มา การใช้งานที่เป็นไปได้ ฉันมักจะประนีประนอมและมีบริการส่วนใหญ่ทำงานภายใต้การดูแลของ runit และคนอื่น ๆ สามารถได้รับอนุญาตให้ทำงานโดยใช้วิธีการเล็กน้อย


1
+1 เป็นมูลค่าการกล่าวถึงว่าrunsvคำสั่งจากrunitสนับสนุนการควบคุมที่กำหนดเองเพื่อให้สามารถเริ่มต้นใหม่ได้ในแง่ของไบนารีการควบคุมเนทีฟของ daemon
pilcrow

4

ดีมีrunit ฉันไม่สามารถบอกคุณได้ว่าความแตกต่างและความคล้ายคลึงกับ daemontools คืออะไร แต่การตัดสินโดยเว็บไซต์ Berstein-esque ฉันจะบอกว่ามีอิทธิพลของ Bernstein อย่างแน่นอน


2
การลงคะแนนของฉันสำหรับ Runit เนื่องจากคุณสามารถวางลงในการจัดเรียง SysVInit และมีการใช้เวลามากกว่า / etc / init.d/ <scriptname> อย่างโปร่งใส
Avery Payne


4

เป็นทางเลือกแทนที่กล่าวถึงแล้วdaemonizeและdaemontoolsมีคำสั่งdaemonของแพ็กเกจ libslack

daemon ค่อนข้างสามารถกำหนดค่าได้และดูแลเกี่ยวกับสิ่งที่น่าเบื่อทั้งหมดเช่นการรีสตาร์ทอัตโนมัติการบันทึกหรือการจัดการ pidfile



3

นอกจากนี้ยังมีเครื่องมือdaemonของ libslack ที่เขียนใน C และพร้อมใช้งานสำหรับแพลตฟอร์ม (Unix) ต่างๆ

สามารถกำหนดค่าได้ค่อนข้างมากและดูแลเกี่ยวกับสิ่งที่น่าเบื่อทั้งหมดเช่นการรีสตาร์ทอัตโนมัติการบันทึกหรือการจัดการ pidfile


2

Ubuntu มาพร้อมกับUpstart - ฉันไม่รู้อะไรมาก แต่รู้ว่ามันมีความสามารถ "ผู้ควบคุม" Apple launchdเป็นอีกตัวเลือกหนึ่ง (บทความ Wikipedia นั้นมีหัวข้อ "see also" ที่ดีซึ่งแสดงรายการกลุ่มอื่น ๆ เช่นกันรวมถึง Upstart & RunIt)

ทุกคนมีคะแนนดีและแบรนด์พิเศษของübersuckทุกครั้งที่มีคนถามฉันเกี่ยวกับโปรแกรม "ผู้ดูแลกระบวนการ" / "สุนัขเฝ้าบ้าน" ฉันมักถามคำถามเดียวกันอยู่เสมอ: ทำไมคุณถึงต้องการ


-2

ไม่มีเครื่องมือยอดนิยม / ชุมชนฉันทามติสำหรับเรื่องนี้เพราะทุกคนที่ลงไปบนถนนสายนี้ตระหนักถึงความตาย หากกระบวนการที่ใช้เวลานานของคุณล้มเหลวบ่อยเกินไปสำหรับการตรวจสอบอย่างง่ายให้ดีพอให้หยุดใช้พวกเขาและย้ายรหัสของคุณภายในบางสิ่งที่จะทำให้เกิดเหตุการณ์มากขึ้น

แก้ไข: ตามที่ Chris ชี้ให้เห็นด้านล่างบางครั้งคุณก็ถูกต้อนเข้ามุมอย่างสมบูรณ์ในกรณีนี้งาน * / 1 cron ที่มองหากระบวนการ / pidfile ให้เริ่ม / รีสตาร์ทหากมันหายไปและส่งผลลัพธ์ในอีเมลไปยังผู้รับผิดชอบ นักพัฒนา / ผู้จัดการผลิตภัณฑ์คือตำแหน่งทางเลือกของคุณ


3
พูดง่ายกว่าทำ. ;-) บางครั้งคุณมีแอปพลิเคชันที่คุณถูกบังคับให้เรียกใช้โดยไม่คำนึงถึงความไม่แน่นอนหรือความเลวร้ายของพวกเขาและสิ่งที่คุณสามารถทำได้เพื่อให้แอปพลิเคชันนั้นทำงานอยู่ ไม่เหมาะไม่ว่าด้วยวิธีใด แต่บางครั้งมันก็ดีเท่าที่ควร
Christopher Cashell

1
คำตอบนี้ไม่ได้กล่าวถึงคุณสมบัติสองประการของหัวหน้างานโปรเซสเซอร์: ความสามารถในการจัดการกลุ่มของกระบวนการเป็นหน่วยเดียวและความสามารถในการจัดการการพึ่งพา ตัวอย่างเช่นเว็บไซต์ของคุณอาจเกี่ยวข้องกับเว็บเซิร์ฟเวอร์เซิร์ฟเวอร์ฐานข้อมูลและเว็บแอปพลิเคชันหลายตัวที่ทำงานเป็นกระบวนการภายนอก กระบวนการเหล่านี้อาจมีการขึ้นต่อกันเช่นฐานข้อมูลจำเป็นต้องมีอยู่ก่อนเว็บแอปพลิเคชัน หัวหน้ากระบวนการที่ดีจะช่วยให้คุณเริ่มและหยุดกลุ่มกระบวนการนี้ด้วยคำสั่งเดียวและจะทำให้แน่ใจว่าสิ่งต่าง ๆ เริ่มต้นขึ้นตามลำดับที่ถูกต้อง
larsks

1
ในโลกอุดมคติทุกอย่างจะทำงานได้อย่างสมบูรณ์แบบ น่าเสียดายที่นี่ไม่ใช่โลกในอุดมคติ
แมตต์

ปัญหาไม่ได้ล้มเหลวบ่อยเกินไป ปัญหาที่เกิดขึ้นเป็นความล้มเหลวสัปดาห์ละครั้งและไม่ได้รับการเริ่มต้นใหม่ได้ทันที นี่ไม่ใช่คำตอบที่แท้จริง
dan3

@ChristopherCashell อยู่ในเส้นทางที่ถูกต้อง การกำกับดูแลภายในแอปมักจะเป็นเรื่องที่เกี่ยวกับวิศวกรรมมากเกินไป (และมันก็ไม่ได้เป็นปรัชญาของ UNIX) ซอฟต์แวร์สามารถสันนิษฐานได้ว่าไม่สมบูรณ์อยู่เสมอไม่ว่าจะมีความพยายามเชิงรุกมากแค่ไหน การกำกับดูแลเป็นชั้นนอกที่แตกต่าง ... กรมธรรม์ประกันภัย จะเป็นการดีกว่าที่จะให้บริการด้านการผลิตดำเนินต่อไปไม่ว่าจะเกิดอะไรขึ้นแม้ว่าพวกเขาจะ "ไม่ควรพลาด" เพราะความจริงคือ sh% t เกิดขึ้น ฉันต้องการเริ่มบริการใหม่เข้าสู่ระบบข้อยกเว้นและแก้ไขในตอนเช้า (สะบัดบริการเป็นอีกกรณีที่ต้องพิจารณา)
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.