CRON - 25~36주 동안 1~5일에 실행됩니다.

CRON - 25~36주 동안 1~5일에 실행됩니다.

CRON 실행을 예약하는 방법이 있습니까?

  • 연중 25~36주 동안만
  • 월~금만 가능합니다(주말은 제외)

여름휴가를 맞아 우리 제품에 대한 주문이 잦아들기 때문이다. 매주 CRON 설정을 변경하는 것은 꽤 지루한 작업입니다. @weekly는 별표 설정과 결합할 수 없으므로 다음과 같은 내용은 유효한 마크업이 아니라는 것을 이해합니다.

* * 1,2,3,4,5 * * @weekly php /app/cmd import >> /logs/cron-offers.log

답변1

다음과 같은 방법으로 이 작업을 수행할 수 있습니다.

# m h  dom mon dow   command
* * * * 1-5 /bin/bash -c "if [ `date +%W` -lt 15 ] && [ `date +%W` -gt 11 ]; then php /app/cmd import >> /logs/cron-offers.log; fi"

첫 번째와 두 번째 "[]"에 정확한 주 수를 입력하세요.

답변2

Cron은 매우 기본적인 스케줄러로 간주되며 구문을 통해 관리자는 좀 더 일반적이지 않은 일정을 쉽게 작성할 수 없습니다. Stock cron에는 사용 가능한 주 번호가 없으므로 창의력을 발휘해야 합니다.

25~36주차 에 따르면 ncal -w 2018다음과 같습니다.

    May               June              July              August          September
Mo     7 14 21 28        4 11 18 25        2  9 16 23 30     6 13 20 27       3
Tu  1  8 15 22 29        5 12 19 26        3 10 17 24 31     7 14 21 28       4
We  2  9 16 23 30        6 13 20 27        4 11 18 25     1  8 15 22 29       5
Th  3 10 17 24 31        7 14 21 28        5 12 19 26     2  9 16 23 30       6
Fr  4 11 18 25        1  8 15 22 29        6 13 20 27     3 10 17 24 31       7
Sa  5 12 19 26        2  9 16 23 30        7 14 21 28     4 11 18 25      1   8
Su  6 13 20 27        3 10 17 24        1  8 15 22 29     5 12 19 26      2   9
   18 19 20 21 22    22 23 24 25 26    26 27 28 29 30 31 31 32 33 34 35  35  36 

한 가지 접근 방식은 원하는 일정을 결합하여 여러 배치를 만드는 것입니다. 예를 들어 먼저 6월 마지막 2주의 평일을 선택한 다음 두 번째 직업에서는 7월과 8월의 모든 평일을 선택하고 세 번째 직업으로는 9월 1일을 선택합니다.

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |

* * 18,19,20,21,22,25,26,26,28,29 jun * php /app/cmd import >> /logs/cron-offers.log
* * * jul,aug mon,tue,wed,thu,fri       php /app/cmd import >> /logs/cron-offers.log
* * 3-7 9 *                             php /app/cmd import >> /logs/cron-offers.log

또 다른 옵션은 단순히 배치를 매일 실행하고 적절한 프로그래밍/스크립팅 언어의 보다 강력한 구문을 사용하여 배치 프로세스 자체(예: PHP 코드)가 즉시 실행해야 할지 종료해야 할지 결정하도록 하는 것입니다.

관련 정보