Unit= 在路徑或定時器單元中的多個實例?
Unit= 的多個實例可以存在於 systemd.path 或 systemd.timer 單元中嗎?或者,是否必須指定路徑或計時器單元的多個實例,每個實例都有一個 Unit=?我無法在其他地方找到或獲得任何指導。
前者顯然更容易。
具體應用是讓一個路徑單元啟動兩個掛載單元。
特別是,路徑單元監視虛擬機的日誌文件,該文件在 VM 執行之前是安靜的。掛載是虛擬機上的共享,並在主機的 fstab 條目中定義,每個條目都使用 x-systemd.requires= mount 選項指定路徑單元,以便在虛擬機安裝之前不會發生掛載跑步。這適用於單個共享。
因此,更具體的問題是(a)路徑單元是否知道按照指示簡單地傳播掛載單元,讓掛載單元掛載共享,或者感到困惑並且只能傳播單個掛載單元;或 (b) 當路徑單元有許多 Unit= 指令(即,通過重新創建所有指定的掛載點)或只是依賴項的表達式時,在 fstab 中呼叫相同的路徑單元兩次是否會產生衝突或錯誤。
非常感謝。
單位=
此計時器經過時要啟動的單元。參數是一個單位名稱,其後綴不是“.timer”。如果未指定,則此值預設為與計時器單元同名的服務,但後綴除外。(見上文。)建議啟動的單元名稱和定時器單元的單元名稱命名相同,除了後綴。
man systemd.path
同樣說:單位=
當任何配置的路徑發生變化時啟動的單元。參數是一個單元名稱,其後綴不是“.path”。如果未指定,則此值預設為與路徑單元同名的服務,但後綴除外。(見上文。)建議啟動的單元名稱和路徑單元的單元名稱命名相同,除了後綴。
這些都不建議您可以有多
Unit=
行或每Unit=
行有多個參數。即使您嘗試並發現它有效,也不能保證它會在 systemd 的未來版本中有效,因為它是未記錄的行為。因此,為您需要觸發的每個單位創建一個
*.path
/是最安全的*.timer
,即使它意味著相同*.path
或*.timer
單位。您的系統上可能已經有幾個*.timer
單元。OnCalendar=daily
老實說,如果我觸摸一條路徑,觸發兩個獨立的服務會有點嚇人。它邀請了比賽條件。您可以考慮更改您的服務以使用多個
ExecStartPre=
或ExecStartPost=
對操作進行排序,以確保它們始終以確定的順序發生。