crontab(5) 매뉴얼에는 다음과 같이 나와 있습니다:
분, 시, 월 필드가 현재 시간과 일치하고 두 날짜 필드(일 또는 요일) 중 하나 이상이 현재 시간과 일치하면 cron(8)에 의해 명령이 실행됩니다("참고" 참조). 아래에). cron(8)은 매분마다 cron 항목을 확인합니다. 시간 및 날짜 필드는 다음과 같습니다.
field allowed values ----- -------------- minute 0-59 hour 0-23 day of month 1-31 month 1-12 (or names, see below) day of week 0-7 (0 or 7 is Sun, or use names)
또한 다음과 같이 말합니다.
필드는 항상 "첫 번째-성"을 나타내는 별표(*)일 수 있습니다.
그 예는 다음과 같습니다:
@weekly Run once a week, "0 0 * * 0".
별표 설명 중 "0 0 * * 0"은 "0 0 1-31 1-12 0"과 같습니다. 내 질문은 왜 매일이 표현에 맞지 않습니까? 문서에 따르면
분, 시, 월 필드가 현재 시간과 일치하는 경우적어도 하나가 있을 때2일 필드(월 또는 요일)가 현재 시간과 일치합니다.
그러면 2019.12.25 00:00과 2019.12.26 00:00이 이 표현식에 유효한 시간이 아닌 이유는 무엇입니까?
둘 다 만족해요"분, 시간, 월 필드가 현재 시간과 일치합니다.", 월은 1~12, 분과 시는 0입니다.
그러면 둘 다 만족할 거예요."두 날짜 필드(월 또는 요일) 중 하나 이상이 현재 시간과 일치합니다." - 해당 월의 날짜가 1~31이므로 한 번의 만족으로 충분합니다.
내가 어디서 잘못됐나요?
답변1
Druben이 언급했듯이 "아래 "참고"참조"를 놓쳤습니다.
참고: 명령이 실행되는 날짜는 "월"과 "요일"의 두 필드에서 지정할 수 있습니다. 두 필드가 모두 제한된 경우(즉,
"*"
문자를 포함하지 않음) 두 필드 중 하나가 현재 시간과 일치할 때 명령이 실행됩니다.
0 0 * * 0
*
날짜가 있으므로 두 필드 규칙 모두 적용되지 않습니다. 날짜 필드 중 하나가 이고 *
다른 하나가 아닌 경우 필드가 아닌 항목이 일치하는 경우 *
에만 명령이 실행됩니다. *
이는 *
숫자 범위 규칙의 예외입니다.
설명서의 오류는 다음 문장입니다.
*
필드에는 항상 "첫 번째-성"을 나타내는 별표( )가 포함될 수 있습니다 .
이 예외에 대한 언급은 없습니다.
답변2
지정된 마지막 필드오직일요일 달리기. 매주 일요일이 선택되도록 일 및 월 필드가 열려 있습니다. 이것은 광고된 대로 작동합니다.