Tài liệu của Monit nêu rõ những điều sau đây đối với hành động khởi động lại:
RESTART khởi động lại dịch vụ và gửi cảnh báo. Khởi động lại được thực hiện
bằng cách gọi phương thức khởi động lại đã đăng ký của dịch vụ hoặc bằng cách gọi trước
phương thức dừng theo sau là phương thức bắt đầu nếu khởi động lại không được đặt.
Tôi đang theo dõi một số quy trình và gần đây tôi phát hiện ra rằng phương thức dừng không được gọi mặc dù phương thức khởi động lại chưa được đặt. Đây là cấu hình:
kiểm tra quá trình myProcess khớp với "myProcess"
bắt đầu chương trình = "/etc/init.d/myProcess start"
dừng chương trình = "/etc/init.d/myProcess dừng"
nếu không tồn tại thì khởi động lại
Nó đã bị hỏng ngày hôm qua và nhật ký cho biết:
[CET ngày 9 tháng 11 12:30:36] lỗi: quy trình 'myProcess' không chạy
[CET ngày 9 tháng 11 12:30:36] thông tin : 'myProcess' đang cố khởi động lại
[CET ngày 9 tháng 11 12:30:36] thông tin: 'myProcess' start: '/etc/init.d/myProcess start'
[CET ngày 9 tháng 11 12:30:36] gỡ lỗi : Bắt đầu myProcess ...
myProcess đã chạy ... // Đầu ra của tập lệnh init.d. Quá trình không bắt đầu do tệp PID không bị xóa bằng phương pháp dừng
[CET ngày 9 tháng 11 12:31:06] lỗi: 'myProcess' không khởi động được (trạng thái thoát 0) -- '/etc/init.d/myProcess start': Bắt đầu myProcess ...
myProcess đã chạy ...
Monit gọi phương thức bắt đầu không thành công do tập lệnh init.d tìm tệp PID không bị xóa do quá trình bị lỗi. Tuy nhiên, theo tài liệu, trước tiên Monit nên gọi phương thức dừng (trong trường hợp của tôi sẽ xóa tệp de PID) và sau đó gọi phương thức bắt đầu.
Có cách nào để có hành vi này trong Monit hay tôi nên sửa đổi tất cả các tập lệnh init.d của mình?