Cron: 매월 1일과 주의 첫날을 제외하고 매일 실행

Cron: 매월 1일과 주의 첫날을 제외하고 매일 실행

저는 cron을 처음 접했고 매월 1일과 매주 1일을 제외한 모든 요일에 작업을 실행하는 방법을 찾으려고 노력하고 있습니다.

조금 이상하게 들릴 수도 있지만 맥락상 이는 백업 작업을 위한 것입니다. 매일 백업하고 싶지만 일부 백업은 더 오래 보관하고 싶으므로 주간 백업과 월간 백업을 수행하세요.

일일 작업에 대한 크론 작업을 설정하고 싶지만 주간 또는 월간 백업도 실행되는 날인 경우 일일 작업을 효과적으로 실행하지 않는 방법을 찾는 데 어려움을 겪고 있습니다. 매월 매일 별도의 크론 작업을 추가하면 될 거라 생각했는데, 별도의 작업이 많아서 옳지 않은 느낌이 듭니다.

cron에서 이를 달성하는 더 좋은 방법이 있습니까?

답변1

나는 요일 제한으로 작업 일정을 잡은 다음 실제 작업 앞에 date"월중 날짜" 테스트를 추가합니다. 자신만의 시간 및 분 필드 값을 사용하세요. Day of Month 필드는 *해당 월의 특정 날짜 또는 모든 날짜에 실행됨을 의미합니다. 월 필드도 활성화됩니다. 요일 필드는 월요일부터 토요일까지로 제한되며 주의 첫 번째 날은 건너뜁니다(일요일을 한 주의 첫 번째 날로 계산한다고 가정). 월요일이 주의 첫 번째 날인 경우 0,2-6대신 요일 값을 사용하십시오.

(minute) (hour) * * 1-6 [ $(date +\%e) -ne 1 ] && actual-job

가장 간단한 방법(월 및 요일 필드 제한)은 작동하지 않습니다 man 5 crontab.용감한강조하다:

참고: 명령이 실행되는 날짜는 "월"과 "요일"의 두 필드에서 지정할 수 있습니다. 두 필드가 모두 제한된 경우(예: "*" 문자를 포함하지 않음) 다음과 같은 경우에 명령이 실행됩니다.누구나필드가 현재 시간과 일치합니다. 예를 들어,

관련 정보