Tôi hiện đang chạy một dự án cá nhân về cơ bản giám sát một số thứ xung quanh đồng hồ. Một là quá trình sử dụng PhantomJS và cái còn lại quét một số API khác và gửi email nếu một số tình huống nhất định xảy ra.
Khi tất cả đã hoạt động, nó hoạt động chính xác như tôi muốn, nhưng thật không may, vào lúc này, cứ sau 2-3 ngày, một điều gì đó xảy ra bình thường trong đêm khuya và trình quét API chỉ bị đóng băng. Nó được viết bằng Python và cứ sau 3 giây lại chạy một lần và khi tôi kiểm tra nhật ký vào ngày hôm sau, không có sự cố, không có gì khác thường, nhưng vì một số lý do, nó đã ngừng chạy.
Khi tôi có thời gian, cuối cùng tôi sẽ khắc phục điều đó, nhưng vì nó chỉ xảy ra một lần sau 3 hoặc 4 ngày chạy, nên rất khó để tái tạo.
Đối với các công cụ PhantomJS ... cứ thỉnh thoảng, điều đó lại nổ tung. Một lần nữa, sẽ có việc dọn dẹp xảy ra ở đó, khắc phục những vấn đề này và có khả năng thay thế hoàn toàn.
Nhưng, trong khi chờ đợi, những gì tôi muốn yêu để làm, là khởi động lại những mỗi 24 giờ một ngày. Nó chắc chắn không hoàn hảo, nhưng với những gì tôi đang làm, nó sẽ giải quyết 99% các vấn đề của tôi.
Trong một thế giới hoàn hảo, tôi sẽ có một danh sách các quy trình, được ghép nối với một danh sách các PID. Cứ sau 24 giờ, tại một thời điểm tôi đã đăng ký, tôi muốn bộ điều khiển này chạy qua mọi bộ vi xử lý, gửi tín hiệu tiêu diệt thông thường (một trong số chúng nói chuyện với DB, vì vậy tôi muốn nó đóng an toàn, nếu có thể), sau đó đợi một khoảng thời gian đã đăng ký (giả sử là 30 giây), sau đó gửi sudo kill -9
tín hiệu đến bộ xử lý sự cố nghiêm trọng, sau đó chạy lại lệnh khởi động.
Tôi đã xem xét có thể sử dụng Supervisor
cho việc này, nhưng dường như (lúc đầu đọc lướt qua) để làm những gì tôi đang tìm kiếm.
Tôi hoàn toàn ổn với việc có thể sử dụng 2-3 chương trình khác nhau cho điều này (ví dụ: cron + giám sát + tập lệnh python), thay vì tìm kiếm một chương trình, nếu không có giải pháp duy nhất hoàn hảo.