Debian

覆蓋 systemd 服務時如何命令 ExecStop= 執行?

  • September 6, 2022

我正在嘗試使用覆蓋文件向 systemd 服務( user-runtime-dir@.service )添加功能。我遇到的麻煩是我需要新功能始終在舊功能“內部”執行,即在原始服務的 ExecStart= 之後和ExecStop *=*之前(因為它在由舊功能,然後在刪除該目錄之前解除安裝它)。

前者很簡單,因為我可以使用ExecStartPost=來確保正確排序。但是沒有ExecStopPre=,如果我只使用ExecStop=,則無法保證排序,實際上結果是錯誤的。

有什麼解決方法嗎?

有什麼解決方法嗎?

如果需要顯式排序,可以替換覆蓋中的現有ExecStop功能。例如,如果原始單元文件有:

ExecStop=/path/to/script1

在您的直接覆蓋中,您可以擁有:

ExecStop=
ExecStop=/path/to/my_additional_script
ExecStop=/path/to/script1

空白ExecStop=清除所有現有條目。

或者,ExecStop可以使用適當的依賴項(///等)將您的邏輯實現為單獨的單元,Requires而不是使用。Before``After

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