Tôi có một dịch vụ systemd đơn giản cần phải được khởi động lại định kỳ để giữ cho quy trình của nó không bị lỗi. Có tùy chọn cấu hình cho các dịch vụ systemd để khởi động lại chúng theo định kỳ không? Tất cả các Restart*
options dường như liên quan đến việc khởi động lại dịch vụ khi nó thoát.Làm cách nào để định cấu hình dịch vụ systemd để khởi động lại định kỳ?
Trả lời
Có, bạn có thể làm cho dịch vụ của bạn khởi động lại định kỳ bằng cách thực hiện dịch vụ Type=notify
. Thêm tùy chọn này trong phần [Dịch vụ] của tệp dịch vụ của bạn cùng với Restart=always
và cung cấp WatchdogSec=xx
, trong đó xx là khoảng thời gian trong giây bạn muốn khởi động lại dịch vụ của mình. Ở đây quá trình của bạn sẽ bị giết bởi systemd sau khoảng thời gian xx và sẽ được khởi động lại bởi systemd một lần nữa. ví dụ:
[Unit]
.
.
[Service]
Type=notify
.
.
WatchdogSec=10
Restart=always
.
.
[Install]
WantedBy= ....
Chỉ cần một số phương pháp thay thế để cuối cùng đạt được mục tiêu giống nhau:
- nếu bạn có thể kiểm soát việc thực hiện dịch vụ mà bạn có thể làm cho nó chấm dứt tự nguyện sau một thời gian, ví dụ một trong hai đồng bằng thoát sau khi một số lượng nhất định lặp đi lặp lại (nếu có) hoặc sử dụng bộ hẹn giờ hết thời gian với trình xử lý, hãy gửi SIGTERM/SIGKILL
- nếu kết thúc dịch vụ tự nguyện không khả thi/thực tiễn bạn có thể có một tập lệnh cron nhỏ giết chết quy trình dịch vụ.
tôi thấy một giải pháp here dường như tao nhã, nếu một chút vòng xoay. Ý tưởng chính là tạo một dịch vụ một lần được kích hoạt bởi bộ hẹn giờ khởi động lại dịch vụ khác.
Đối với bộ đếm thời gian:
[Unit]
Description=Do something daily
[Timer]
OnCalendar=daily
Persistent=true
[Install]
WantedBy=timer.target
Đối với dịch vụ one-shot:
[Unit]
Description=Restart service
[Service]
Type=oneshot
ExecStart=/usr/bin/systemctl try-restart my_program.service
Đối với dịch vụ one-shot trên Ubuntu 16.04 LTS:
[Unit]
Description=Restart service
[Service]
Type=oneshot
ExecStart=/bin/systemctl try-restart my_program.service
Giải pháp này cho phép bạn tận dụng bộ tính giờ của systemd, bao gồm khả năng khởi động lại dịch vụ tại một thời điểm cụ thể trong ngày và không chỉ sau một số lượng thời gian đã trôi qua.
I ' m bối rối về cách hẹn giờ hàng ngày gọi dịch vụ một lần ở đây? – svandragt
Tôi không chắc liệu đây có phải là những gì bạn đang yêu cầu hay không, nhưng, tốt nhất là tôi hiểu nó, dịch vụ một lần có hẹn giờ liên kết với nó và công việc của dịch vụ một lần này là khởi động lại dịch vụ khác . Tôi tin rằng điều này được thực hiện bằng cách đặt tên cho dịch vụ và bộ hẹn giờ được kết hợp với cùng tên, tức là 'weeklyRestart.service' và' weeklyRestart.timer'. Khi tôi làm việc này, tôi đã đi qua một liên kết _lot_. Nhắn tin cho tôi và tôi có thể gửi cho bạn một kết nối kết xuất. – matmat
@svandragt Đó chính là cách hoạt động của nó.Bộ hẹn giờ hệ thống phải có cùng tên với dịch vụ mà nó bắt đầu. –
- 1. vấn đề khởi động dịch vụ systemd
- 2. cách sử dụng systemD để khởi động lại dịch vụ khi xuống?
- 3. Cách khởi động lại jquery Có thể định cấu hình
- 4. Làm thế nào để khởi động lại dịch vụ RabbitMQ
- 5. Cách thiết lập dịch vụ systemd để thử lại 5 lần trong chu kỳ 30 giây
- 6. Cách khởi động lại dịch vụ?
- 7. Cách định cấu hình Upshot.js cho dịch vụ OData?
- 8. Cách định cấu hình bean được quản lý khởi động?
- 9. Tệp hàng loạt để khởi động lại dịch vụ. Windows
- 10. Bắt đầu dịch vụ systemd qua python
- 11. Làm cách nào để chạy một phương thức dịch vụ định kỳ?
- 12. Định cấu hình dịch vụ WCF (Web.config) - HttpsGetEnabled, HttpsGetUrl
- 13. Android - Dịch vụ nền định kỳ - Lời khuyên
- 14. Tôi làm cách nào để chia sẻ một dịch vụ giữa các hoạt động mà không cần khởi động lại?
- 15. Làm thế nào để khởi động lại một dịch vụ nếu dịch vụ phụ thuộc của nó được khởi động lại
- 16. Định cấu hình dịch vụ nghỉ ngơi wcf trong web.config
- 17. Làm thế nào để khởi động lại một dịch vụ cửa sổ sử dụng Task Scheduler
- 18. Tôi làm cách nào để định cấu hình hộ chiếu-github để xác nhận người dùng khi gọi lại?
- 19. Cách khởi động lại dịch vụ từ xa?
- 20. Tôi làm cách nào để định cấu hình hoạt động Trình khởi chạy có lập trình trong Android?
- 21. Làm thế nào để ngăn chặn "Lập kế hoạch khởi động lại dịch vụ bị rơi"?
- 22. Cách định cấu hình đẩy tự động?
- 23. Dịch vụ tomcat8 không thể khởi động bằng cách sử dụng dịch vụ tomcat8 bắt đầu
- 24. Làm cách nào để truy cập vào $ locationProvider để định cấu hình?
- 25. Định cấu hình Erlang để hoạt động với SSL
- 26. Làm cách nào để khởi động lại/tái sử dụng Tác vụ lặp lại?
- 27. Xem xét xác định loại đậu 'dịch vụ' trong cấu hình của bạn [Khởi động mùa xuân]
- 28. Khởi động mùa xuân: Không thể định cấu hình
- 29. Làm thế nào để bạn xác định khi Windows được thực hiện khởi động lại?
- 30. Cơ chế khởi động lại dịch vụ trong đầu bếp
Thông minh! FWIW 'type = notify' là không cần thiết cho dịch vụ di sản câm của tôi mà chỉ lỗi sau một thời gian. Tuy nhiên, việc thiết lập 'WatchdogSec' với' Type = simple' cũng giống nhau. – wes
Vấn đề với 'WatchdogSec'' là nó sẽ gửi một SIGABRT (gây ra một dump cốt lõi) mỗi khi nó khởi động lại. Bên cạnh việc chấm dứt không rõ ràng quá trình, nó cũng có thể lấp đầy đĩa gốc của bạn với coredumps cuối cùng. – bk0
@wes cảm ơn, 'Type = notify' không làm cho dịch vụ bắt đầu với tôi,' Type = 'simple' hoạt động tốt (thực sự không có bất kỳ' Type' nào hoạt động tốt, có lẽ đơn giản là mặc định 'Type') – WonderLand