systemd ExecStopPost 및 $SERVICE_RESULT 동작

systemd ExecStopPost 및 $SERVICE_RESULT 동작

작동하지 않는 부분이 예상대로 작동하기를 바랍니다. 이 구문에는 환경 변수 $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만 가지고 있어서 정확히 무엇을 하고 있는지 테스트할 수는 없지만 일반적으로 ${var}셸 양식 대신 양식을 사용하여 systemd에 의해 보간된 변수를 얻을 수 있습니다 $var. 노력하다

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

관련 정보