Từ khi bạn đề cập đến Upstart, tôi sẽ giả định rằng câu hỏi này là dành cho một dịch vụ đang chạy trên máy chủ Ubuntu. Trên máy chủ Ubuntu, một công việc mới nổi thực sự là lựa chọn đơn giản và thuận tiện nhất để tạo một dịch vụ luôn khởi động vào đúng thời điểm và có thể được dừng lại hoặc tải lại với các lệnh quen thuộc.
Để tạo dịch vụ mới nổi, bạn cần thêm một tệp vào /etc/init
. Được gọi là <service-name>.conf
. Một tập lệnh mẫu trông giống như sau:
description "My chat server"
author "[email protected]"
start on runlevel [2345]
stop on runlevel [!2345]
env AN_ENVIRONMENTAL_VARIABLE=i-want-to-set
respawn
exec /srv/applications/chat.py
Điều này có nghĩa là mọi lúc máy bắt đầu chương trình sẽ bắt đầu chương trình chat.py
. Nếu nó chết vì bất cứ lý do gì nó sẽ khởi động lại nó. Bạn không cần phải lo lắng về việc sử dụng gấp đôi hoặc ngược lại mã daemon của bạn. Đó là xử lý cho bạn bởi mới nổi.
Nếu bạn muốn dừng hoặc bắt đầu quá trình của bạn, bạn có thể làm như vậy với
service chat start
service chat stop
Tên chat
được tự động tìm thấy từ tên của tập tin .conf
bên /etc/init
Tôi chỉ bao gồm các khái niệm cơ bản về khởi đầu ở đây. Có rất nhiều tính năng khác để làm cho nó hữu ích hơn nữa. Tất cả có sẵn bằng cách chạy man upstart
.
Phương pháp này thuận tiện hơn nhiều so với viết mã daemonization của riêng bạn. Một tập tin cấu hình 4-8 dòng cho một thành phần được xây dựng trong Ubuntu là ít hơn nhiều lỗi dễ làm hơn làm cho mã của bạn một cách an toàn gấp đôi ngã ba và sau đó có một quá trình giám sát nó để đảm bảo nó không biến mất.
Monit là một chút cá trích đỏ. Nếu bạn muốn cảnh báo thời gian ngừng hoạt động, bạn sẽ cần chạy chương trình theo dõi trên máy chủ riêng biệt. Dựa vào mới nổi để giữ cho quá trình luôn chạy trên máy chủ. Sau đó, có một dịch vụ khác nhau đảm bảo máy chủ thực sự đang chạy. Thời gian ngừng hoạt động xảy ra vì nhiều lý do khác nhau. Một quá trình chạy trên cùng một máy chủ sẽ cho bạn biết chính xác không có gì nếu chính máy chủ bị hỏng. Bạn cần một máy riêng biệt (hoặc một nhà cung cấp bên thứ ba như pingdom) để cảnh báo bạn về điều kiện đó.
Có nguồn xác thực nào hỗ trợ câu trả lời của bạn không? Chạy trên Ubuntu là một tùy chọn nhưng không bắt buộc (daemonize sẽ hoạt động trên cả hai). Thứ hai, bạn phải sử dụng monit ngay cả khi mới nổi để nhận cảnh báo thời gian chết. – mtariq
Bạn có thể bắt đầu gửi email cho bạn khi nó dừng/bắt đầu (http://serverfault.com/questions/236925/how-can-i-receive-an-email-when-an-upstart-monitored-script-respawns) . nguồn xác thực? Mọi người sử dụng mới nổi trong sản xuất ở khắp mọi nơi. Chúng tôi sử dụng mới nổi trong sản xuất Bạn không thể sử dụng monit cho cảnh báo thời gian chết. Nó là vô nghĩa. Xem câu trả lời đã chỉnh sửa vì lý do tại sao. – aychedee
Bài đăng tuyệt vời. Upstart là trong cây Debian, vì vậy nó có thể có thể được sử dụng trong vanilla debian hoặc Mint cũng như các dẫn xuất khác. – meawoppl