한국어

개발자 도구 · Crontab 생성기

cron의 날짜와 요일: 모두를 놀라게 하는 OR 규칙

· 작동 방식

크론 달력 일정 예약

OR 게이트를 통해 하나의 일정으로 결합되는 두 개의 달력 필터
원본 ToolAcre 벡터 일러스트레이션

두 날짜 필드가 모두 제한된 경우 둘 중 하나가 일치하면 cron이 작업을 실행합니다. 이 게시물에서는 crontab(5)의 규칙과 그 규칙이 존재하는 이유, 그리고 이로 인해 방지되는 일정을 얻는 방법에 대해 설명합니다.

보고서는 1일과 매주 월요일에 실행되었습니다. 0 9 1 * 1 표현은 그 내용을 의미하지 않습니다.

`0 9 1 * 1`과 같은 표현식은 두 날짜 열을 누적 필터로 읽는 경우 "첫 번째 월요일에 09:00"와 같습니다. ToolAcre는 그런 식으로 읽지 않습니다. 날짜를 1로 설정하고 요일을 월요일로 설정하면 파서는 두 조건 중 하나가 일치할 수 있음을 경고하므로 일정에는 매주 첫 번째 월요일과 매주 월요일이 포함됩니다.

이것은 사소한 표현 선호가 아닙니다. 월별 보고서는 4~5회 추가로 실행할 수 있으며, 월요일에만 예상되는 작업도 매월 1일에 실행할 수 있습니다. 생성기는 설명 옆에 "점검할 가치가 있음" 경고를 표시하므로 표현식이 외부 crontab에 복사되기 전에 확장된 동작이 표시됩니다.

작성된 규칙 — 날짜와 요일이 모두 제한된 경우 두 필드 중 하나가 일치하면 명령이 실행됩니다.

구현의 `dayMatches` 함수는 네 가지 경우를 명시적으로 처리합니다. 모든 날짜에는 두 개의 와일드카드가 허용됩니다. 와일드카드 날짜는 평일을 따릅니다. 와일드카드 평일은 날짜를 따릅니다. 두 개의 제한된 필드는 일치 항목의 논리적 OR을 반환합니다. 테스트에서는 13일, 금요일만 일치하고 두 조건 모두 일치하지 않는 날짜를 다룹니다.

설명은 동일한 규칙을 유지합니다. `0 0 13 * 5`는 모호한 접속사가 아닌 "매월 13일 또는 금요일"로 렌더링됩니다. 구문 분석, 다음 실행 선택 및 영어 출력은 모두 동일한 해석을 사용합니다. 해당 경로 간의 불일치가 즉시 오해의 소지가 있는 미리 보기를 생성할 수 있기 때문에 이러한 공유된 행동은 격리된 도움말 레이블보다 더 강력한 증거입니다.

파서는 OR을 구현하고 결과를 공개합니다. 규칙의 기록을 설정하지 않습니다.

통합 문서 개요는 OR 설계에 대한 역사적 이유를 제공했지만 이 저장소는 출처보다는 동작을 증명합니다. 코드 주석은 Vixie 스타일 규칙을 식별하고 테스트는 ToolAcre에 의해 모델링된 결과를 설정합니다. 그들은 규칙을 선택한 사람, 언제 채택되었는지, 허용적 해석이 선호된 이유를 문서화하지 않습니다.

기술 문서 작성에서는 경계를 유지하는 것이 중요합니다. 독자는 이 도구가 표현을 어떻게 확장하는지 정확히 알아야 합니다. 안전하게 사용하기 위해 고안된 표준 설명이 필요하지 않습니다. 배포 대상이 다른 날짜 의미를 문서화하는 경우 자체 매뉴얼이 이 브라우저 미리보기보다 우선합니다. ToolAcre는 모든 스케줄러가 동의한다고 주장하는 대신 계산하는 방언을 명시합니다.

작업 예: 한 달 동안 0 9 1 * 1 열거 — 작성자가 원하는 일정과 비교하여 실행되는 날짜

첫날이 월요일이 아닌 달을 생각해 보세요. `0 9 1 * 1`는 매주 월요일에 첫 번째 실행과 추가 실행에서 하나의 실행을 생성합니다. 첫 번째 날짜가 월요일인 경우 다음 실행 검색에서는 두 개의 개별 트리거가 아닌 1분을 고려하기 때문에 해당 날짜는 계속 한 번 표시됩니다. Union의 크기는 달력에 따라 변경되지만 논리에서는 변경되지 않습니다.

시간대를 선택하고 다음 5개의 실행을 읽어 해당 통합을 검사할 수 있습니다. 미리보기는 현재 순간 이후부터 엄격하게 시작되며 월, 일 및 시간 필드를 적용하여 달력 날짜를 검색합니다. 실시간 목록은 독자가 확인을 수행하는 시기와 장소에 따라 달라지기 때문에 기사 산문에서 특정 달을 약속하지 않습니다.

AND 스타일 첫 번째 월요일 명령 해결 방법은 이 일정 생성기 외부에 있습니다.

계획에서는 AND 동작을 얻기 위해 쉘 날짜 테스트를 포함할 것을 제안했습니다. ToolAcre는 이러한 명령을 확인할 수 없습니다. 5개의 일정 필드만 허용하며 복사된 전체 줄에는 자리 표시자 실행 파일이 포함되어 있습니다. 쉘 구문, 백분율 이스케이프, 명령 가용성 및 종료 동작은 모두 최종적으로 작업을 실행하는 환경에 속합니다.

이 생성기 내에서 안전한 설계 조치는 OR 조합이 실제로 의도되지 않은 한 하루 필드를 `*`로 두는 것입니다. 첫 번째 월요일 요구 사항의 경우 5개 필드 cron만으로는 이 방언의 교차점을 표현하지 않는다는 점을 문서화하세요. 실행되지 않은 스니펫을 보장된 대로 제시하는 대신 환경별 솔루션을 별도로 선택하고 테스트하세요.

다른 스케줄러 연산자는 이 5개 필드 구문 분석기에 의해 해석되지 않습니다.

일부 스케줄러 문법은 `#`, `L`, `W` 또는 `?`와 같은 연산자를 노출하지만 이 구문 분석기는 이들 중 어느 것도 허용하지 않습니다. 또한 6개 필드를 거부하고 계약이 5개 필드 crontab 구문이라고 설명합니다. 따라서 다른 제품에서 작동하는 표현식을 동일한 달력 규칙이 존재한다는 증거로 여기에 붙여넣을 수 없습니다.

방언 번역은 검증이 성공할 때까지 구두점을 삭제하는 것이 아니라 소스 및 대상 문법을 식별하는 것으로 시작됩니다. ToolAcre는 대상의 5개 일반 필드, 이름, 범위, 목록 및 단계를 구성하는 데 도움을 줄 수 있습니다. 지원되지 않는 연산자가 전달하는 의미 체계를 보존할 수 없으며 기사에서는 해당 외국 연산자가 구현된 것처럼 의도적으로 설명하지 않습니다.

명령 이스케이프가 표현식 전용 문법을 벗어났습니다.

백분율 기호와 명령 인용은 일정 뒤에 나타나며 `parseCron` 외부에 있습니다. 파서는 하나의 표현식을 공백으로 구분된 정확히 5개의 부분으로 나눕니다. 셸 파이프라인, 날짜 명령 또는 이스케이프된 명령 페이로드를 읽지 않습니다. 따라서 통합 문서에서 제안한 경우에도 이 문서에서는 백분율 기호 해결 방법을 가르치지 않습니다.

해당 누락은 정확성 결정입니다. 일정 도구는 타이밍 필드의 유효성이 검사되기 때문에 명령이 안전하다고 암시해서는 안 됩니다. 무해한 입력과 관찰 가능한 출력을 사용하여 실제 cron 구현 및 셸에서 명령 구문을 검토합니다. 생성기의 결과 범위를 명백히 이해하는 달력 규칙으로 유지하세요.

요약: 하루 필드를 둘 다로 제한하지 않고 하루만 제한합니다. 라인을 저장하기 전에 생성기의 설명에 따라 OR이 표시됩니다.

두 날짜 필드가 모두 제한된 경우 이를 통합으로 읽고 "또는"을 큰 소리로 말하세요. 더 나은 방법은 발전기의 경고 및 향후 실행을 검사하는 것입니다. 해당 날짜가 의도한 세트를 초과하는 경우 하나의 필드를 `*`에 반환하고 대상 환경에 문서화된 메커니즘을 사용하여 보다 특수한 요구 사항을 해결합니다.

핵심 교훈은 cron이 신비롭다는 것이 아닙니다. 두 개의 인접한 열은 다른 제한 사항처럼 결합되지 않습니다. ToolAcre는 구문 분석, 설명 및 미리 보기 논리에서 해당 예외를 중앙 집중화합니다. 표현식이 브라우저를 떠나 작업 일정이 되기 전에 이 세 가지 보기를 사용하여 불일치를 파악하세요.