Systemd 單元文件 - WantedBy 和 After
我有一個關於為 Systemd 製作我自己的單元(服務)文件的問題。
我已閱讀文件並有一些問題。在四處搜尋之後,我發現這個非常有用的答案提供了一些關於我遇到的一些問題的詳細資訊。
如何編寫執行 systemd-tmpfiles 的 systemd .service 文件
儘管我發現該答案很有用,但仍有一部分我不明白。主要是這部分:
由於我們實際上希望此服務稍後執行而不是更早執行,因此我們指定了“After”子句。這實際上不需要與 WantedBy 目標相同(通常不是)
我對 After 的理解是它非常簡單。服務(或您定義的任何內容)將在 After 中列出的單元之後執行。
同樣,WantedBy 似乎很簡單。您正在定義您列出的單位對您的服務有需求。因此,對於像多使用者或圖形這樣的目標,您的單元應該執行以便 systemd 認為已達到該目標。
現在,假設到目前為止我對這些聲明如何工作的理解是正確的,我的問題是:為什麼在 After 和 WantedBy 子句中列出相同的單元?
例如,在我看來,定義一個 After multi-user.target 和 WantedBy multi-user.target 的單元會導致不可能的情況,即在達到目標後需要啟動該單元,但它也需要為被視為“達到”的目標而開始。
我是不是誤會了什麼?
該手冊在以下部分討論了/和//
systemd
之間的關係:Before``After``Requires``Wants``Bindto
Before=, After=
請注意,此設置獨立於並正交於由 Requires=、Wants= 或 BindsTo= 配置的需求依賴關係。在 After= 和 Requires= 選項中包含單位名稱是一種常見模式,
After
不暗示Wants
orWantedBy
,也不與這些設置衝突。如果兩個單元都被觸發啟動,
After
會影響順序,而不管依賴鏈。如果列出的模組
After
不在依賴鏈中的某個位置,它將不會被載入,因為After
並不意味著任何依賴。