systemd 타이머, 정전 후 서비스를 다시 시작하는 방법은 무엇입니까?

systemd 타이머, 정전 후 서비스를 다시 시작하는 방법은 무엇입니까?

저는 매일 아침 7시에 서비스를 시작하기 위해 시스템 타이머를 실험하고 있습니다. 이 서비스는 오후 10시까지 지속적으로 실행되어야 하는 애플리케이션을 시작합니다. 따라서 애플리케이션이 충돌하면 서비스가 애플리케이션을 다시 시작해야 합니다. 10시에 crontab에 의해 서비스가 중지되고 시스템도 종료됩니다.

OnCalendar 및 Pertant=true인 타이머를 사용하고 있으며 타이머가 작동하지만 오전 7시 이후에 전원이 꺼지면(전원이 복원된 후 BIOS로 시스템 재부팅) 타이머가 작동하기 때문에 서비스가 시작되는지 확인할 수 없습니다. Trigger 성공은 오전 7시에 일어나서 다음날까지 기다려야함..

시스템이 오전 7시 이전에 시작될 수 있으면(밤에 정전) 서비스도 시작되고 오전 7시 이전에 시작되는 것을 원하지 않기 때문에 시작 시 서비스를 실행할 수 없습니다.

어떤 아이디어가 있나요?

답변1

OnCalendar를 통해 타이머가 예약되었다고 가정하면, 누락된 이벤트 이후 타이머의 마지막 실행 상태는 무엇입니까? 이것은 출력의 마지막 열입니다 systemctl list-timers.

"해당 없음"이라고 표시되면 타이머가 이전에 트리거된 적이 없거나 마지막 실행 상태가 지워졌으므로 시작 시 실행되지 않습니다.

답변2

내가 찾은 현재 해결책은 this..delete입니다.우표파일이 에 있습니다 ~/.local/share/systemd/timers. 그런 다음 타이머가 다시 시작됩니다.

[출처][1] "각 타이머가 마지막으로 실행된 시간을 표시하는 길이가 0인 파일입니다. 삭제하면 다음에 타이머가 시작될 때 다시 빌드됩니다."

[1]:https://wiki.archlinux.org/index.php/Systemd/Timers

해결 방법을 찾았다고 생각했는데 오전 7시 이후에 전원이 꺼지면 작동하지 않는다는 것을 깨달았습니다...

답변3

구경하다:

[Timer]
#Execute job if it missed a run due to machine being off
Persistent=true
#Run 120 seconds after boot for the first time
OnBootSec=120

관련 정보