나는 우연히 다음 예를 발견했습니다.
0 9 1-7 * 1 * First Monday of each month, at 9a.m.
1-7
매월 날짜가 되어야 하는 부분이 확실하지 않습니다 . 왜1-7
대신에*
?3개월마다 0000포인트에서 실행되는 cronjob을 작성하는 방법은 무엇입니까?
0 0 1 */3 * *
위 내용이 맞나요?
답변1
#* * * * * command to be executed
#- - - - -
#| | | | |
#| | | | ----- Day of week (0 - 7) (Sunday=0 or 7)
#| | | ------- Month (1 - 12)
#| | --------- Day of month (1 - 31)
#| ----------- Hour (0 - 23)
#------------- Minute (0 - 59)
당신 말이 맞습니다. 5개의 별표 뒤에는 쉘 명령이 있어야 합니다.
를 실행하여 cron 탭이 실행 중인지 확인할 수 있습니다 tail -f /var/log/syslog | grep CRON
. 테스트 목적으로 n
몇 분 동안 사용할 수 있습니다 .
답변2
0 9 1-7 * *
작업은 하루에 한 번(9:00) 실행되지만 매월 처음 7일 동안만 실행됩니다. 매월 첫 번째 월요일에 작업을 실행하는 한 가지 방법은 다음과 같습니다. 처음 7일 동안 작업을 실행하되 해당 날짜가 월요일이 아니면 아무 작업도 수행하지 않습니다.
0 9 1-7 * * if [ "$(date +%u)" = 1 ]; then do_stuff; fi
0 9 * 1 *
매주 월요일마다 이 작업을 실행합니다. 매월 첫 번째 월요일에 작업을 실행하는 또 다른 방법은 다음과 같습니다. 매주 월요일에 작업을 실행하되, 매월 첫 7일이 아닌 이상 아무 작업도 수행하지 마세요.
0 9 * * 1 if [ "$(date +%_d)" -le 7 ]; then do_stuff; fi
0 9 1-7 * 1 *
두 가지 접근 방식을 결합하려는 시도가 실패한 것 같습니다. 이 작업 은 0 9 1-7 * 1
매주 월요일에 실행됩니다.그리고매월 첫 7일마다.
0 0 1 */3 *
(끝에 하나를 더 추가한 경우 *
) 매월 1일 자정에 작업을 실행하지만 해당 월이 3의 배수인 경우에만 해당됩니다. 이것은 실제로 3개월에 한 번씩 이루어집니다.
답변3
참고해주세요,"3개월째" 그리고"3개월에 한 번씩첫 번째는 해당 연도의 첫 번째 달부터 시작하여 3개월마다를 의미합니다. 예를 들어, 2021-11-01 00:00:00을 시작점으로 하면 다음과 같습니다.
- 다음번2021-04-01 00:00:00
- 그럼 2021-07-01 00:00:00
- 그럼 2021-10-01 00:00:00
- 그럼 2021-01-01 00:00:00
이를 달성하려면 구문이 0 0 1 */3 * *
제안한 대로 되어야 합니다. 이것 좀 봐여기
다른 하나는 현재 3개월을 고려하는 것이다. 예를 들어 2021-11-01 00:00:00을 시작점으로 사용하면 다음과 같습니다.
- 다음번2022-02-01 00:00:00
- 그럼 2022-05-01 00:00:00
- 그럼 2022-8-01 00:00:00
- 그럼 2022-11-01 00:00:00
이를 달성하기 위해 구문은 0 0 1 2-12/3 * *
제안한 대로입니다. 이걸 보면 돼여기.
'수량'을 계산해야 한다는 점에 유의하세요.당신이 원하는 매달” 그리고 이 숫자부터 해당 연도의 마지막 달(12월)까지 시작합니다. 이전 예에서 시작 달은 11월(11월)이고, 다음 3개월을 계산하면 두 번째 달(내년 2월)이 됩니다. .