我希望不工作的部分能够按预期工作。该语法要求环境变量 $SERVICE_RESULT 前后至少有一个空格。
系统版本:237
这[电子邮件受保护]模板使用 %i,我调用一个小实用程序,该实用程序使用“_”解析 %i,以分隔失败的服务名称 (%N),然后是相应的 $SERVICE_RESULT。我尝试使用 PassEnvironment 将 $SERVICE_RESULT 注入子进程,但这没有帮助。
// 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
答案1
我只有较早版本的 systemd,因此我无法准确测试您所做的事情,但一般来说,您可以使用 form${var}
而不是 shell form来获取由 systemd 插值的变量$var
。尝试
ExecStopPost=/bin/systemctl start failurehandler@%N_${SERVICE_RESULT}.service