Làm chương trình luôn chạy trên nền


1

Tôi đã tạo một kịch bản python, cần phải liên tục thực hiện một số công việc, bất cứ khi nào máy đang chạy kịch bản cần chạy, vấn đề là đôi khi nó gặp sự cố từ những lý do không thể giải quyết được. Trong những tình huống này tôi muốn nó khởi động lại.

Tôi đã nghĩ đến việc biến nó thành một daemon, nhưng tôi không chắc liệu đó có phải là một việc quá mức hay là điều đúng đắn phải làm hay không.


Thực hành tốt hơn sẽ là imo để làm cho nó xuất ra những gì sai. Làm thế nào để làm điều đó phụ thuộc vào kịch bản, và những gì nó nên làm. Nếu bạn chạy nó một thời gian trong một thiết bị đầu cuối cho đến khi nó gặp sự cố sẽ cung cấp cho bạn ít nhất một linh cảm.
Jacob Vlijm

Nếu chương trình cần chạy mọi lúc khi hệ thống hoạt động và chạy, bạn nên xem xét cấu hình của dịch vụ (systemd) quản lý phiên bản chương trình. Có một tùy chọn để khởi động lại một quy trình dịch vụ bất cứ khi nào nó kết thúc miễn là bản thân các dịch vụ không bị dừng bởi một sự kiện được xác định trước hoặc sự can thiệp của người dùng.
David Foerster

@JacobVlijm Tôi đã xử lý ngoại lệ, nhưng vấn đề là đôi khi máy chủ tự khởi động lại hoặc những thứ khác như quá tải bộ nhớ bởi các chương trình khác mà tôi không kiểm soát được.
dùng9219312

Câu trả lời:


1
(while true; do echo "$(date) hello world"; sleep 1; done) &

Hoặc cho kịch bản của bạn:

(while true; do ./python_script.py; done) &

0

Bạn có thể sử dụng công cụ monit . nó rất nhỏ và hữu ích cho bất kỳ loại quản lý và giám sát quy trình nào.

Sau khi tải xuống gói nhị phân từ liên kết này , bạn có thể trích xuất nó vào một thư mục trên hệ thống của bạn và sau đó sao chép hai tệp từ gói vào hệ thống của bạn để cài đặt nó:

cd /path/to/monit/folder
cp ./bin/monit /usr/sbin/monit
cp ./conf/monitrc /etc/monitrc  

Bây giờ chỉnh sửa /etc/monitrcdựa trên nhu cầu của bạn ( tài liệu tham khảo ). sau đó tạo một tệp điều khiển init để kích hoạt monit khi khởi động. Bây giờ bắt đầu monit như thế này:

initctl reload-configuration
start monit
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.