ใช่; แต่ก่อนแก้ไขโปรแกรมรถของคุณก่อนที่จะเล่นซอกับ systemd
MariusMatutiae ค่อนข้างถูกต้อง คุณมีปัญหากับโปรแกรมของคุณ มันหยุดชะงัก การเล่นซอกับ systemd ไม่ใช่คำตอบ ที่ดีที่สุดมันเป็นสิ่งที่ทำให้ไขว้เขว แก้ไขโปรแกรมของคุณเพื่อไม่ให้เสีย กำกับพลังงานของคุณในสิ่งที่ถูกต้อง
ที่กล่าวว่าคนอื่นจะมาที่นี่เพราะชื่อคำถามมากกว่าคำถามที่เหมาะสม เพื่อประโยชน์ของพวกเขานี่คือคำตอบของชื่อโดยไม่สนใจคำถาม:
ใช่ systemd สามารถตรวจสอบdæmonsและรีสตาร์ทโดยอัตโนมัติหากพวกเขาหยุดพูด ไม่ใช่แค่dæmonsรุ่นเก่า ๆ เท่านั้น ในฐานะที่เป็น mvp บันทึกว่าไม่มีทางที่จะรู้ว่ามีdæmonแขวนอยู่ (ในจักรวาลนี้ซึ่งปัญหาการลังเลไม่สามารถตัดสินใจได้อย่างน้อย) ทั้ง systemd หรือโปรแกรมคอมพิวเตอร์อื่น ๆ จะไม่สามารถหักลบได้ตั้งแต่เริ่มต้นว่าโปรแกรมแบบสุ่มบางอันที่ถูกโยนลงไปนั้นถูกหยุดชะงักหรือเข้าสู่วงวนไม่สิ้นสุดหรืออะไรก็ตาม สิ่งที่ดีที่สุดที่คุณจะได้รับจากที่นี่คือการตรวจจับว่าdæmonไม่ได้ดำเนินการ "heartbeat" ตามปกติภายในระยะเวลาที่กำหนด
ดังนั้นผู้ใช้ที่ใช้ประโยชน์จากความสามารถในการจ้องจับผิดของ systemd จึงต้องถูกเขียนขึ้นเพื่อพูดโปรโตคอลที่เฉพาะเจาะจงของ systemd นั่นคือโปรโตคอล sd_notify สิ่งนี้จะทำให้รหัสdæmonยุ่งยากน้อยลง มีความซับซ้อนมากขึ้นเนื่องจากdæmonsควรเขียนอย่างถูกต้องตรวจสอบว่าพวกเขาได้รับการเปิดใช้งานด้วยการเปิดใช้งานฟังก์ชั่นการเฝ้าระวังเช่นกัน
dæmonที่พูดโปรโตคอลนี้เพื่อใช้ประโยชน์จากความสามารถในการเฝ้าระวังของ systemd ...
- ... ต้องตรวจสอบ
WATCHDOG_USEC
ตัวแปรสภาพแวดล้อม
- ... ต้องเรียกsd_notify ()อย่างต่อเนื่องและบ่อยครั้งตลอดอายุการใช้งานพร้อม
WATCHDOG=1
ชุดตัวเลือกในช่วงเวลาประมาณWATCHDOG_USEC
/ 2 ("USEC" หมายถึงไมโครวินาที)
- ... ต้องมีการ
Type=notify
ตั้งค่าในไฟล์หน่วย
- ... ควรมี
NotifyAccess=main
(หรือ=all
) ตั้งในไฟล์หน่วย
- ... ต้องมีการตั้งค่า
WatchdogSec=
วินาทีในไฟล์หน่วย
- ... ต้องเชื่อมโยงกับ
libsystemd-daemon.so
หากคุณต้องการทราบรายละเอียดของการเข้ารหัสนี้หลังจากอ่านคู่มือแล้วตรวจสอบให้แน่ใจว่าคุณไปที่ StackExchange ที่ถูกต้อง นี่คือ SuperUser StackOverflow อยู่ตรงนั้น
อ่านเพิ่มเติม
- Lennart Poettering 2011/04/12 ลูกน้อง Freedesktop.org
for(;;) do_something();
?