เอกสารประกอบของ Monit ระบุสิ่งต่อไปนี้สำหรับการดำเนินการรีสตาร์ท :
RESTART เริ่มบริการใหม่และส่งการแจ้งเตือน ทำการรีสตาร์ท
โดยเรียกวิธีการรีสตาร์ทที่ลงทะเบียนของบริการหรือโดยการโทรครั้งแรก
วิธีหยุดตามด้วยวิธีเริ่มต้นหากไม่ได้ตั้งค่าการรีสตาร์ท
ฉันกำลังตรวจสอบกระบวนการบางอย่างและเพิ่งพบว่าวิธีการหยุดไม่ได้ถูกเรียกแม้ว่าจะไม่ได้ตั้งค่าวิธีการรีสตาร์ทก็ตาม นี่คือการกำหนดค่า:
ตรวจสอบกระบวนการ myProcess ที่ตรงกับ "myProcess"
โปรแกรมเริ่มต้น = "/etc/init.d/myProcess start"
หยุดโปรแกรม = "/etc/init.d/myProcess หยุด"
หากไม่มีอยู่ให้เริ่มต้นใหม่
มันล้มเหลวเมื่อวานนี้และบันทึกกล่าวว่า:
[CET 9 พ.ย. 12:30:36] ข้อผิดพลาด: กระบวนการ 'myProcess' ไม่ทำงาน
[CET 9 พ.ย. 12:30:36 น.] ข้อมูล: 'myProcess' พยายามรีสตาร์ท
[CET 9 พ.ย. 12:30:36 น.] ข้อมูล: 'myProcess' เริ่มต้น: '/etc/init.d/myProcess start'
[CET 9 พ.ย. 12:30:36 น.] debug : กำลังเริ่มต้น myProcess ...
myProcess กำลังทำงาน ... // ผลลัพธ์ของสคริปต์ init.d กระบวนการไม่เริ่มขึ้นเนื่องจากไฟล์ PID ไม่ได้ถูกลบโดยวิธีการหยุด
[CET 9 พ.ย. 12:31:06] ข้อผิดพลาด: 'myProcess' ล้มเหลวในการเริ่มต้น (สถานะออก 0) - '/etc/init.d/myProcess start': การเริ่มต้น myProcess ...
myProcess กำลังทำงานอยู่ ...
Monit เรียกใช้เมธอด start ซึ่งล้มเหลวเนื่องจากสคริปต์ init.d ค้นหาไฟล์ PID ที่ไม่ถูกลบเนื่องจากกระบวนการขัดข้อง อย่างไรก็ตาม ตามเอกสารประกอบ Monit ควรเรียกเมธอด stop ก่อน (ซึ่งในกรณีของฉันจะลบไฟล์ de PID) แล้วจึงเรียกเมธอด start
มีวิธีใดที่จะมีพฤติกรรมนี้ใน Monit หรือฉันควรแก้ไขสคริปต์ init.d ทั้งหมดของฉัน