Linux

systemd ExecStopPost 和 $SERVICE_RESULT 行為

  • September 13, 2018

我希望不工作的部分按預期工作。該語法要求在環境變數 $SERVICE_RESULT 前後至少有一個空格。

系統版本:237

failurehandler@.service 模板使用 %i,我呼叫了一個小實用程序,該實用程序使用“_”解析 %i 以分離失敗的服務名稱 (%N),然後是相應的 $ SERVICE_RESULT. I tried injecting $ SERVICE_RESULT 使用 PassEnvironment 進入孩子,但這沒有幫助。

// works
ExecStopPost=/bin/echo $SERVICE_RESULT

// works
ExecStopPost=/bin/systemctl start failurehandler@%N $SERVICE_RESULT .service

// doesn't work. I want this working to later use the %N and the $SERVICE_RESULT 
ExecStopPost=/bin/systemctl start failurehandler@%N_$SERVICE_RESULT.service

我只有 systemd 的早期版本,所以我無法準確測試您所做的事情,但通常您可以通過使用 form${var}而不是 shell form來獲得 systemd 插值的變數$var。嘗試

ExecStopPost=/bin/systemctl start failurehandler@%N_${SERVICE_RESULT}.service

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