일일 크론 작업은 몇 달 동안 활성 또는 비활성 상태입니다.

일일 크론 작업은 몇 달 동안 활성 또는 비활성 상태입니다.

cron 작업을 예약하려고 하는데 완전히 실패했습니다. 나는 cron으로는 이것이 불가능하다고 생각하기 시작했습니다.

6개월 동안 매일 특정 시간에 실행되는 작업을 설정하려고 합니다. 그런 다음 2개월 동안 중지한 다음 6개월 동안 다시 실행을 시작하고, 그 후 2개월 동안 중지하고 6개월 동안 다시 실행하는 식으로 계속됩니다.

간단히 말해서, 6개월 동안 매일 실행하고, 2개월 동안 중지한 다음, 6개월 동안 다시 실행하고, 6개월 동안 무한 루프로 실행하고 2개월 동안 중단하기를 원합니다. 1년이 14개월이라면 이렇게 하는 방법을 찾을 수 있겠지만, 아쉽게도 12개월밖에 없습니다.

cron으로 이런 작업을 수행하는 것이 가능합니까?

티아

답변1

cron을 사용하여 조건을 완전히 표현할 수는 없지만 셸에서 평가되는 조건을 추가하여 cron을 보완할 수 있습니다. 여기서의 아이디어는 매일 적절한 시간에 작업을 실행하도록 cron에 지시한 다음 작업을 시작하기 전에 셸을 사용하여 월을 확인하는 것입니다.

예를 들어 월간 주기가 매월 1일에 시작한다고 가정하면 주기를 확인하는 한 가지 방법은 다음과 같습니다(2020년 9월 시작).

[[ $((($(date "+%Y*12+10#%m")-(2020*12+9)) % 8)) -lt 6 ]] && ...

이를 위해서는 date현재 날짜의 형식을 지정 하고 <year>*12+10#<month>( 10#월을 기본 10 값으로 설정) 이를 산술 표현식으로 사용하여 시작 월 이후 경과된 개월 수를 계산하고 8로 나눈 나머지를 계산해야 합니다. 따라서 시작 달에는 결과가 0이고 다음 달에는 1, 6개월 후에는 주기가 다시 시작됩니다. 따라서 결과를 6과 비교하여 스크립트를 실행해야 하는지 결정합니다.

cron에서 사용 중인 셸이 이러한 산술 연산을 지원한다고 가정하면 이를 cron 탭에 직접 포함할 수 있습니다. 그렇지 않으면 스크립트 시작 부분에 포함합니다.

관련 정보