cron
일년 내내 하루에 여러 번 실행되는 스크립트가 있습니다 . 하지만 크리스마스에는 상황이 달라져야 합니다. 따라서 내 스크립트는 기본적으로 다음과 같습니다.
# m h dom mon dow command
26 16 * JAN-NOV MON-THU (echo 14 `date`) >> /var/log/cron.www-data 2>&1
26 16 1-18 DEC MON-THU (echo 6 `date`) >> /var/log/cron.www-data 2>&1
echo
디버깅/데모 목적으로 실제 명령을 간단한 명령으로 대체했습니다 . 특별한 경우에는 다음과 같은 작업을 추가했습니다.
26 07 19-24 DEC ? (echo 1 `date` ) >> /var/log/cron.www-data 2>&1
실제로 꽤 잘 작동합니다.
문제는 위의 두 번째 줄( )이 echo 6
12월 19일 오늘 바로 실행되었다는 것입니다. 로그 파일에는 다음과 같이 표시됩니다.
6 Tue Dec 19 16:00:01 CET 2017
내 질문은 간단하다고 생각합니다.이 작업이 실행되는 이유는 무엇입니까??
저는 Raspberry Pi에서 Linux 3.18.11-v7+ #781 SMP PREEMPT Tue Apr 21 18:07:59 BST 2015 armv7l GNU/Linux를 실행하고 있습니다.
답변1
이유는 다음과 같습니다 crontab(5)
.
분, 시, 월 필드가 현재 시간과 일치하면 cron(8)에 의해 명령이 실행됩니다.두 개의 날짜 필드(일 또는 요일) 중 하나 이상이 현재 시간과 일치하는 경우.
(강조가 추가됨)
나는 스크립트가 12월 1일부터 18일까지 지정된 시간, 즉 월요일부터 목요일까지만 실행되기를 원한다고 생각합니다. 매뉴얼 페이지에서 볼 수 있듯이, cron
날짜와 요일을 지정하면 이 기능이 작동하지 않습니다. 귀하의 명령은 12월 1일부터 18일까지 매일 실행됩니다.그리고12월 월요일부터 목요일까지의 요일. 2017년 12월 19일은 화요일이므로 스크립트가 실행됩니다.
노트:위 내용은 Debian 시스템의 기본값인 ISC cron에 적용됩니다.