저는 매일 아침 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