Systemd BindsTo - 서비스 충돌 후 다시 시작

Systemd BindsTo - 서비스 충돌 후 다시 시작

내 시스템에는 여러 시스템 서비스가 있습니다 . 이러한 서비스가 모두 실행되는 한 내 시스템은 "실행 중"으로 간주됩니다 a.service.z.service

이 상태는 장치 상태 LED 어딘가에 표시되어야 합니다. 이를 위해 나는 system-status.service다음을 수행하는 다른 시스템 서비스를 사용하는 것을 생각했습니다.

  • 모든 서비스가 active실행 중으로 표시되는 경우
  • 서비스가 충돌/중지되면 해당 서비스가 실행되고 있지 않음을 나타냅니다.

이 불완전한 코드 조각을 사용하면 system-status.service다음 한 가지 경우를 제외하고는 정상적으로 작동합니다.

[Unit]
BindsTo=a.service
BindsTo=b.service
...

After=a.service
After=b.service 
...

[Service]
ExecStart=/usr/bin/indicate-running.sh
ExecStop=/usr/bin/indicate-stopped.sh

그러나 a.service라인이 포함되어 충돌 Restart=always이 발생 하면 a.service(시뮬레이션을 통해 kill -9) a.service재부팅은 성공하지만 system-status.service실패합니다!

kill -9 <a.pid>

어떤 아이디어가 있나요? 감사해요!

답변1

필요한 것은 Wants=system-status.service과 사이의 관계입니다. 이 두 서비스에 대한 재정의를 추가하지 않으려는 경우 설치 섹션에 역관계를 추가해야 합니다.a.serviceb.servicesystem-status.service

...

[Install]
WantedBy=a.service
WantedBy=b.service

이 섹션을 적용하려면 systemctl enable system-status.service다시 실행해야 합니다.

관련 정보