Documentația Monit afirmă următoarele pentru acțiunea de repornire:
RESTART repornește serviciul și trimite o alertă. Repornirea este efectuată
prin apelarea metodei de repornire înregistrată a serviciului sau prin primul apel
metoda stop urmată de metoda start dacă restart nu este setat.
Monitorizez unele procese și recent am aflat că metoda de oprire nu este apelată chiar dacă metoda de repornire nu este setată. Iată configurația:
verificați procesul myProcess care se potrivește cu „myProcess”
start program = "/etc/init.d/myProcess start"
stop program = "/etc/init.d/myProcess stop"
dacă nu există, reporniți
S-a prăbușit ieri și jurnalul spunea:
[CET 9 noiembrie 12:30:36] eroare: procesul „myProcess” nu rulează
[CET 9 noiembrie 12:30:36] informații: „myProcess” încearcă să repornească
[CET 9 noiembrie 12:30:36] informații: pornirea „myProcess”: „/etc/init.d/myProcess start”
[CET 9 noiembrie 12:30:36] depanare: se pornește myProcess...
myProcess rulează deja... //Ieșirea scriptului init.d. Procesul nu începe, deoarece fișierul PID nu a fost șters prin metoda stop
[CET 9 noiembrie 12:31:06] eroare: „myProcess” nu a reușit să pornească (starea de ieșire 0) -- „/etc/init.d/myProcess start”: se pornește myProcess...
myProcess rulează deja...
Monit apelează metoda de pornire care nu reușește, deoarece scriptul init.d caută fișierul PID care nu a fost șters de când procesul s-a prăbușit. Cu toate acestea, conform documentației, Monit ar trebui să apeleze mai întâi metoda de oprire (care în cazul meu ar șterge fișierul PID) și apoi să apeleze metoda de pornire.
Există o modalitate de a avea acest comportament în Monit sau ar trebui să-mi modific toate scripturile init.d?