Systemd
同一個 systemd 服務的“之前”和“想要”?
在這個systemd 單元文件的例子中:
# systemd-timesyncd.service ... Before=time-sync.target sysinit.target shutdown.target Conflicts=shutdown.target Wants=time-sync.target
systemd-timesyncd.service
應該開始之前time-sync.target
。這定義了一個排序依賴。但同時
systemd-timesyncd.service
想要time-sync.target
。time-sync.target
它的需求依賴也是如此這種關係的案例是什麼?為什麼它們之間沒有衝突?
這種雙重關係的案例類似於“提供”關係。
systemd-timesyncd
提供時間同步服務,因此它滿足一個單元對time-sync.target
. 它必須在之前啟動,time-sync.target
因為它對於任何依賴時間同步的服務都是必需的,並且它想要time-sync.target
因為任何依賴時間同步的單元都應該與systemd-timesyncd
服務一起啟動。我認為誤解來自您對“想要”的解釋。systemd 中的“想要”關係不是依賴關係:
systemd-timesyncd
不需要time-sync
起作用。這是一個“開始”關係:它表示配置單元 (systemd-timesyncd.service
) 希望列出的單元 (time-sync.target
) 與其一起開始。