[서비스] 아래의 사용자를 systemd의 OnFailure 유닛에 전달하는 방법

[서비스] 아래의 사용자를 systemd의 OnFailure 유닛에 전달하는 방법

루트가 아닌 특정 사용자로 실행되는 시스템 장치가 있습니다. 이 장치에는 다른 시스템 장치 1개와 OnFailure가 있습니다. 이 OnFailure 유닛에서 ExecStart는 이메일을 보내는 셸 스크립트를 시작합니다. 이 쉘 스크립트에 실패한 원래 시스템 장치의 사용자를 전달하고 싶습니다. 어떻게 해야 하나요?

답변1

인수를 전달할 때 셀을 시작하는 일반적인 방법은 인스턴스를 사용하여 시작한 unit@parameter다음 셀 내에서 해당 값을 복원하는 것입니다 %I. 예를 들어 --user테스트를 위해 파일은 다음과 같습니다 ~/.config/systemd/user/tryfail.service.

[Unit]
User=otheruser
[email protected]
[Service]
ExecStart=/bin/bash -c 'sleep 3;exit 7'

그리고~/.config/systemd/user/[email protected]

[Unit]
Description=%I Instance of Fail Service
[Service]
ExecStart=/bin/bash -c 'echo got %i'
StandardOutput=journal

지금 주문하세요

systemctl --user daemon-reload
systemctl --user start tryfail
journalctl -f 

실패한 서비스가 시작되고 있다는 otheruser정보가 표시되어야 합니다. 분명히 이것은 User=테스트에 사용할 때 무시되지만 --user그것은 중요하지 않습니다.

관련 정보