
06:05부터 22:05까지 15분마다 크론 작업을 실행해야 합니다.
0 5/15 6-22 * * *
다음 구문에는 22:35 및 22:50이 포함됩니다.
이것을 달성하는 방법에 대한 아이디어가 있습니까? 한 줄로 가능합니까, 아니면 여러 개를 구성해야 합니까?
답변1
하나의 cronline으로 가능하지만 트릭이 있어야만 가능합니다.
SHELL=/bin/bash
5-50/15 6-22 * * * [[ '2220 2235 2250' =~ "$(date +\%H\%M)" ]] || /path/to/script
또는 sh
(및 bash)
SHELL=/bin/sh
5-50/15 6-22 * * * case "$(date +\%H\%M)" in 2220|2235|2250) ;; *) /path/to/script;;esac
crontab에 필요한 퍼센트(%) 문자에 대한 백슬래시 이스케이프에 유의하세요.
답변2
*/15 6-22 * * * /path/to/script
또는
5,20,35,50 6-22 * * * /path/to/script
필드는 항상 "첫 번째-성"을 나타내는 별표(*)일 수 있습니다. 숫자 범위가 허용됩니다. 범위는 하이픈으로 구분된 두 개의 숫자입니다. 지정된 범위가 포함됩니다. 예를 들어 "시간" 항목의 8-11은 8, 9, 10 및 11시에 실행을 지정합니다.
목록이 허용됩니다. 목록은 쉼표로 구분된 숫자(또는 범위)의 집합입니다. 예: "1,2,5,9", "0-4,8-12".
단계 값은 범위와 함께 사용할 수 있습니다. 범위 뒤에 ""가 있으면 해당 범위 전체에서 숫자 값을 건너뛰도록 지정됩니다. 예를 들어, 시간 필드에 "0-23/2"를 사용하여 2시간마다 명령 실행을 지정할 수 있습니다(V7 표준의 대안은 "0,2,4,6,8,10,12,14,16입니다). ,18,20,22"). 별표 뒤에도 단계가 허용되므로 "2시간마다"라고 말하고 싶다면 "*/2"를 사용하면 됩니다.
"월" 및 "요일" 필드에도 이름을 사용할 수 있습니다. 특정 날짜 또는 월의 처음 세 글자를 사용하세요(대소문자는 중요하지 않음). 범위 또는 이름 목록은 허용되지 않습니다.
"여섯 번째" 필드(줄의 나머지 부분)는 실행할 명령을 지정합니다. 개행 또는 % 문자까지 행의 전체 명령 부분은 /bin/sh 또는 cronfile의 SHELL 변수에 지정된 쉘에 의해 실행됩니다. 백슬래시()로 이스케이프하지 않는 한 명령의 백분율 기호(%)는 개행 문자로 변경되고 첫 번째 % 이후의 모든 데이터는 표준 입력으로 명령에 전송됩니다.
참고: 명령 실행 날짜는 날짜와 요일이라는 두 가지 필드로 지정할 수 있습니다. 두 필드가 모두 제한된 경우(예: *가 아님) 두 필드 중 하나가 현재 시간과 일치할 때 명령이 실행됩니다. 예를 들어, "30 4 1,15 * 5"를 입력하면 매월 1일과 15일, 그리고 매주 금요일 오전 4시 30분에 명령이 실행됩니다.
답변3
개인적으로 두 줄로 나누겠습니다.
5-50/15 6-21 * * * /path/to/script
5 22 * * * /path/to/script
첫 번째 줄은 0605-2150을 다루고 두 번째 줄은 2205에 추가로 실행됩니다.
정말로 하나의 라이너를 원한다면 부정확한 작업 시작 시간을 수용하기 위해 부정확한 검사를 수행할 것입니다.
5-50/15 6-22 * * * [[ $(date +"\%-H\%M") -le 2210 ]] && /path/to/script
답변4
조금 늦었지만 완전성을 기하기 위해 CronBuddy.com에서 모든 cron 표현식에 대한 향후 실행 시간 목록을 얻을 수 있습니다. 이는 무슨 일이 일어날지 쉽게 확인할 수 있는 방법입니다.