Cronjob은 예정된 시간 전에 실행됩니다. 무엇이 잘못 될 수 있습니까?


10

나는 19-23 일 사이에 토요일에 예정된 crontab 아래에 있는데 왜 그것이 20 일 (금요일)에 실행되었는지 잘 모르겠습니다. 어떤 추측?

00 21 19-23 * 6 <command>

1
/etc/cron.d/mdadm우분투와 데비안 에서 영감을 얻을 수 있습니다 . 매월 첫 번째 일요일은 다음과 같습니다.57 0 * * 0 root if [ -x /usr/share/mdadm/checkarray ] && [ $(date +\%d) -le 7 ]; then /usr/share/mdadm/checkarray --cron --all --idle --quiet; fi
kasperd

kasperd 덕분에 매월 0 18 * * 6 [date +\%d -le 07] && <task> 첫 번째 토요일에 실행 해야하는 나를 위해 잘 작동하고 있습니다.
simer

답변:


16

그 Cron 표현식은 다음과 같이 번역됩니다.

At 21:00 on the 19, 20, 21, 22 and 23rd of every month and every Saturday.

그래서 그것은 크론에게 20 일 금요일에 달리라고 지시했다. 이것은 다음 때문입니다.

When the schedule specifies both date and weekday, they're combined with a logical OR,
i.e. the job will run if current_minute == scheduled_minute 
&& current_hour == scheduled_hour && current_month == scheduled_month && 
(current_day == scheduled_date OR current_weekday == scheduled_weekday).

이 정보는이 편리한 Cron 도구에서 가져온 것입니다 : http://crontab.guru/

토요일에 지정된 날에 작업을 실행하려면 다음을 사용할 수 있습니다.

00 21 19-23 * * test $(date +%u) -eq 6 && command

이 솔루션은 crontab 요일과 요일의 것입니까?


6
%cronjobs에서 특별한 의미 를 갖는 것을 명심하십시오 – 명령의 표준 입력을 분리합니다.
user1686
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.