ฉันต้องการตั้งค่าบริการ systemd เพื่อให้เริ่มต้นใหม่อย่างรวดเร็วในตอนแรก แต่ช้าลงหลังจากนั้นสักครู่ เหตุผลคือบริการอาจล้มเหลวชั่วคราวและกลับมาใช้งานได้อย่างรวดเร็วเพื่อความพร้อมใช้งานสูงสุด แต่หากปัญหายังคงอยู่อีกต่อไป สิ่งนี้จะสร้างรายการบันทึกจำนวนมาก ในกรณีดังกล่าว ช่วงเวลาการรีสตาร์ทควรนานขึ้นเพื่อไม่ให้เกิดการโหลดดังกล่าว แต่ยังคงกลับมาหากปัญหาได้รับการแก้ไขในบางครั้ง
นี่คือไฟล์บริการปัจจุบันของฉัน:
[หน่วย]
StartLimitIntervalSec=120
StartLimitBurst=4
[บริการ]
ExecStart=/root/test.sh
เริ่มใหม่ = เสมอ
รีสตาร์ทวินาที=10
สคริปต์ทดสอบวนซ้ำตราบใดที่ /root/test.run มีอยู่ จากนั้นออกด้วยรหัสข้อผิดพลาด ฉันสามารถทำให้บริการล้มเหลวได้โดยการลบไฟล์นั้น
นี่คือสิ่งที่ฉันสังเกตเห็น:
- การเริ่มต้นบริการโดยไม่มีไฟล์เรียกใช้จะล้มเหลวทันที จากนั้นจะลองใหม่ 4 ครั้งและล้มเหลวตลอดไป มันจะไม่พยายามที่จะเริ่มต้นอีกครั้ง
- การเริ่มต้นบริการด้วยไฟล์เรียกใช้ มันจะทำงานในตอนแรก หลังจากลบไฟล์ บริการล้มเหลว จากนั้นรีสตาร์ทตามด้านบน: 4 ครั้งจากนั้นจะไม่เกิดขึ้นอีก
เห็นได้ชัดว่านี่ไม่ใช่การจำกัดอัตรา แต่เป็นเพียงการจำกัด
ฉันต้องเปลี่ยนอะไรบ้างจึงจะได้รับการจำกัดอัตรา? หลังจากรีสตาร์ท 4 ครั้งภายใน 120 วินาทีล้มเหลว บริการควรพยายามเริ่มต้นใหม่ด้วยอัตราที่ต่ำกว่า
ทำงานบน Raspberry Pi OS ล่าสุด แต่ควรใช้กับระบบปฏิบัติการ Linux ใด ๆ ที่มี systemd