Linux

系統後你不知道_在n一世噸unit選項不起作用

  • August 8, 2017

我有以下myweb.service文件

[Unit]
Description=myweb - A simple hello world program
After=bluetooth.service

[Service]
Type=simple
User=root
ExecStart=/usr/bin/docker run -p 2222:4343 manikanth/webapp
Restart=on-failure

[Install]
#WantedBy=multi-user.target

我故意禁用bluetooth.service並檢查。但是該服務仍然處於活動狀態。我認為這可能是由於WantedBy,因此我發表了評論。問題依然存在

如果依賴服務(例如)不活動,那麼不啟動服務的正確方法是什麼?bluetooth.service

您可能正在尋找該Requisite=選項以及該After=選項。

手冊頁

類似於 Requires=。但是,如果此處列出的單元尚未啟動,它們將不會啟動並且事務將立即失敗。

Requires=在這種情況下不起作用是因為bluetooth.service啟動時會啟動myweb.serviceRequisite=選項不會嘗試啟動bluetooth.service. 但是,它會顯示myweb.service失敗。

如果我沒記錯的話,您正在尋找僅在啟動myweb.service時才啟動bluetooth.service,否則不要觸發myweb.serbice。如果正確,請閱讀以下答案,否則請糾正我!

你真的應該使用Requireswith After。使用After僅配置單元文件之間的排序依賴關係,但Requires將確保依賴單元失敗時也會失敗。所以,添加Requires=bluetooth.servicemyweb.service``systemctl daemon-reload

引用自:https://unix.stackexchange.com/questions/384747