systemd ExecStopPost e $ SERVICE_RESULT comportamento

0

Eu quero que a parte que não está funcionando funcione conforme o esperado. A sintaxe espera pelo menos espaçamento simples antes e depois da variável de ambiente $ SERVICE_RESULT.

Versão do Systemd: 237

O modelo failurehandler @ .service usa% i e eu invoco um pequeno utilitário que analisa% i usando "_" para separar o nome do serviço que falhou (% N) e, em seguida, o $ SERVICE_RESULT correspondente. Eu tentei injetar $ SERVICE_RESULT em criança usando PassEnvironment, mas isso não ajudou.

// 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
    
por Arun 07.08.2018 / 06:57

1 resposta

1

Eu só tenho uma versão anterior do systemd, portanto não posso testar exatamente o que você faz, mas em geral você pode obter variáveis interpoladas pelo systemd usando o formulário ${var} em vez do formulário shell $var . Experimente

ExecStopPost=/bin/systemctl start failurehandler@%N_${SERVICE_RESULT}.service
    
por 07.08.2018 / 09:57