프로그램을 실행하고 싶습니다.2019-08-14 13:00:00.
이후에는 4,096분마다 실행됩니다.
알아요/정수1분에 한 번씩 반복할 수 있습니다. 그러나 이렇게 쓰는 것은 잘못된 것입니다.
OnCalendar=2019-08-14 13:00/4096:00 UTC
4096분은 허용되지 않는 것 같습니다. 오류: 2019-08-14 13:8/4096:00 UTC를 무시하고 달력 사양을 구문 분석할 수 없습니다.
이것을 구현하는 방법을 아는 사람이 있습니까?
답변1
systemd 달력 사양의 구문은 /
평가 중인 특정 필드에만 적용됩니다. 이는 *
필드의 모든 값을 허용하는 구문 과 유사하며 일반적으로 /1
필드의 1단위마다 반복됩니다.
이는 cron과도 유사하며 일부 cron 구현에서는 유사한 /
구문(약간 다르며 예를 들어 공백이 필요함 5-59/8
)과 *
구문도 허용합니다.
선적 서류 비치시스템 시간(7)용어를 함께 언급 *
하고 사용하십시오./
성냥, 이는 이 필드에만 제한이 있음을 강력히 의미합니다.
날짜 및 시간 지정에서 모든 구성요소는 "
*
"로 지정될 수 있으며, 이 경우 모든 값이 일치합니다. 또는 각 구성 요소를 쉼표로 구분된 값 목록으로 지정할 수 있습니다. 값에는 " " 및 반복 값 접미사가 붙을 수 있습니다/
. 이는 값 자체가 값과 반복 값의 모든 배수와 일치함을 나타냅니다. " "로 구분된 두 값은..
값의 범위를 나타내는 데 사용할 수 있으며 범위 뒤에는 "/
" 및 반복되는 값이 올 수도 있습니다.
따라서 불행하게도 4096분마다 반복되는 단일 달력 사양을 사용하는 것은 실제로 불가능합니다.
한 가지 옵션은 다른 타이머 단위 설정을 사용하는 것입니다.OnUnitActiveSec=
, 연결된 장치가 활성화된 후 특정 간격으로 타이머를 트리거합니다. 타이머를 실행하면 장치가 활성화되므로 선택한 간격에 따라 정기적으로 반복적으로 실행됩니다.
이를 캘린더 이벤트와 결합하여 먼저 해당 캘린더 이벤트를 실행한 다음 규칙을 통해 반복하도록 할 수 있습니다 OnUnitActiveSec=
. 머신이 재부팅되면 중지될 수 있습니다. 이 경우 루프를 스크롤하려면 장치를 한 번 트리거해야 합니다. 예를 들어 OnBootSec=
재부팅 시 작동하는 또 다른 옵션은 다음과 같습니다.Persistent=
속성. )