ExecStart 항목을 실행하기 전에 서비스를 중지하려면 어떻게 해야 합니까?

ExecStart 항목을 실행하기 전에 서비스를 중지하려면 어떻게 해야 합니까?

서비스를 중지하고 스크립트를 실행한 후 서비스를 다시 시작하도록 타이머를 설정하고 싶습니다.

한 가지 가능성은 다음과 같습니다.

Type=oneshot
ExecStartPre=/bin/systemctl stop myservice
ExecStart=/usr/local/bin/myscript.sh
ExecStartPost=/bin/systemctl start myservice

다른 하나는 myscript.sh을 포함하여 모든 것을 다루는 것 입니다 systemctl.

systemctl그러나 서비스와 상호 작용하기 위한 시스템 내장 메커니즘이 있을 수 있는 경우 서비스 선언에 사용하는 것이 어색하다고 생각합니다. 이러한 작업을 수행하는 더 깔끔한 방법이 있습니까?

답변1

WatchdogSec을(ab?) 이용하여, 규정된 시간 내에 확인하지 못한 경우 서비스가 종료됩니다. 그런 다음 다시 시작되지만 먼저 스크립트를 실행합니다.

WatchdogSec={interval}
Restart=on-watchdog
ExecStopPost=/script.sh

인용하다:감시 보안

서비스가 실행되는 동안 백업이 가능하다면 더 좋은 서비스가 될 것입니다.

관련 정보