Một giải pháp khác có thể được sử dụng ExecStartPost tùy chọn để khởi động lại bar.service (nếu nó thực hiện) khi foo.service đã (lại) bắt đầu:
# foo.service
[Service]
ExecStartPost=/bin/systemctl try-restart bar.service
Restart=on-failure
RestartSec=30s
Các thêm Khởi động lại các tùy chọn và RestartSec đảm bảo rằng foo.service sẽ tự động khởi động lại khi gặp sự cố và do đó cũng có bar.service.
Tiện ích mở rộng thứ hai của tôi là để thêm vào bar.service và đảm bảo rằng bar.service bắt đầu sau foo.dịch vụ:
# bar.service
[Unit]
After=foo.service
[Service]
Restart=on-failure
RestartSec=30s
này nên bắt đầu cả hai dịch vụ tự động trong trường hợp của một vụ tai nạn và bar.service sẽ được khởi động lại khi khởi động lại foo.service (do một lỗi hoặc bằng tay kích hoạt).
Nguồn
2018-02-19 19:12:58
Bạn đã cố gắng đặt dòng 'Restart = always' trong dịch vụ của mình chưa? Tôi đoán thanh sẽ được khởi động lại ngay sau khi phụ thuộc của nó còn sống – ogs
@SnP Khởi động lại "Định cấu hình liệu dịch vụ có được khởi động lại khi quá trình dịch vụ thoát, bị giết hoặc hết thời gian chờ" và do đó sẽ không giúp trừ khi thanh bị treo khi foo khởi động lại. –
Khá thú vị! Cảm ơn bạn đã làm rõ – ogs