crontab이 모든 요구 사항을 충족하지 않습니다

crontab이 모든 요구 사항을 충족하지 않습니다

이것은 기본적으로 매년 4월 1일에 실행하고 싶지만 4월 1일이 목요일인 경우에만 실행하고 싶은 crontab 항목입니다.

0 13 1 4 4 /path/to/my/script.sh

그런데 이게 매주 진행되는 것 같아요. 내가 무엇을 놓치고 있나요?

답변1

crontab 항목의 문제는 다음과 같습니다.이미 지적함하지만 예상 날짜 및 시간에 스크립트를 실행하려면 작업 일정을 다음과 같이 변경하세요.

0 13 1 4 * [ "$(date +\%u)" -eq 4 ] && /path/to/my/script.sh

답변2

man -s 5 crontab설명하다:

참고: 명령이 실행되는 날짜는 날짜와 요일의 두 필드로 지정할 수 있습니다. 두 필드가 모두 제한된 경우(즉, *가 아님) 두 필드 중 하나가 현재 시간과 일치할 때 명령이 실행됩니다.

오늘의 사양은 둘 다 1st day이므로 Thursday둘 다에서 실행됩니다(그러나 2021년과 같이 첫날이 목요일인 경우 두 번 실행되지 않음).

일반적인 해결책은 첫날에 crontab을 실행하고 스크립트가 date명령을 사용하여 요일을 확인하고 목요일이 아닌 이상 일찍 종료하도록 하는 것입니다.

7년에 한 번만 실행되는 스크립트의 경우 이는 많은 문제처럼 보입니다.

관련 정보