Mount

Unit= 在路徑或定時器單元中的多個實例?

  • April 7, 2021

Unit= 的多個實例可以存在於 systemd.path 或 systemd.timer 單元中嗎?或者,是否必須指定路徑或計時器單元的多個實例,每個實例都有一個 Unit=?我無法在其他地方找到或獲得任何指導。

前者顯然更容易。

具體應用是讓一個路徑單元啟動兩個掛載單元。

特別是,路徑單元監視虛擬機的日誌文件,該文件在 VM 執行之前是安靜的。掛載是虛擬機上的共享,並在主機的 fstab 條目中定義,每個條目都使用 x-systemd.requires= mount 選項指定路徑單元,以便在虛擬機安裝之前不會發生掛載跑步。這適用於單個共享。

因此,更具體的問題是(a)路徑單元是否知道按照指示簡單地傳播掛載單元,讓掛載單元掛載共享,或者感到困惑並且只能傳播單個掛載單元;或 (b) 當路徑單元有許多 Unit= 指令(即,通過重新創建所有指定的掛載點)或只是依賴項的表達式時,在 fstab 中呼叫相同的路徑單元兩次是否會產生衝突或錯誤。

非常感謝。

man systemd.timer說:

單位=

此計時器經過時要啟動的單元。參數是一個單位名稱,其後綴不是“.timer”。如果未指定,則此值預設為與計時器單元同名的服務,但後綴除外。(見上文。)建議啟動的單元名稱和定時器單元的單元名稱命名相同,除了後綴。

man systemd.path同樣說:

單位=

當任何配置的路徑發生變化時啟動的單元。參數是一個單元名稱,其後綴不是“.path”。如果未指定,則此值預設為與路徑單元同名的服務,但後綴除外。(見上文。)建議啟動的單元名稱和路徑單元的單元名稱命名相同,除了後綴。

這些都不建議您可以有多Unit=行或每Unit=行有多個參數。即使您嘗試並發現它有效,也不能保證它會在 systemd 的未來版本中有效,因為它是未記錄的行為。

因此,為您需要觸發的每個單位創建一個*.path/是最安全的*.timer,即使它意味著相同*.path*.timer單位。您的系統上可能已經有幾個*.timer單元。OnCalendar=daily

老實說,如果我觸摸一條路徑,觸發兩個獨立的服務會有點嚇人。它邀請了比賽條件。您可以考慮更改您的服務以使用多個ExecStartPre=ExecStartPost=對操作進行排序,以確保它們始終以確定的順序發生。

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