![지연/오프셋 crontab */x는 특정 시간을 예약합니다.](https://linux55.com/image/174416/%EC%A7%80%EC%97%B0%2F%EC%98%A4%ED%94%84%EC%85%8B%20crontab%20*%2Fx%EB%8A%94%20%ED%8A%B9%EC%A0%95%20%EC%8B%9C%EA%B0%84%EC%9D%84%20%EC%98%88%EC%95%BD%ED%95%A9%EB%8B%88%EB%8B%A4..png)
4일마다 스크립트를 실행합니다.
0 */96 * * * /path/to/script.sh
하지만 이를 만회하여 4일마다 두 번째 스크립트를 실행할 수 있지만 첫 번째 스크립트와는 2일 간격을 두고 싶습니다. 그래서 최종 결과는
Script 1
wait 2 days
Script 2
wait 2 days
Script 1
wait 2 days
Script 2
이러한 종류의 예약에 대한 구문이 있습니까? 나는 그것이 다음과 같을 것이라고 상상한다.
0 48+*/96 * * * /path/to/script2.sh
답변1
나는 crontab에서 날짜 선택기와 시간 선택기를 확장할 수 있는 방법이 없다고 생각합니다. 월/주/일 모델을 깔끔하게 처리할 방법도 없습니다.
가장 쉬운 방법은 작업 일정을 너무 많이 잡아서 "오늘이 그날인지" 확인하도록 요청하는 것입니다. 작업을 변경할 수 없는 경우 적절한 스크립트로 래핑하세요. crontab 명령줄에서 날짜 확인을 처리하는 것은 최후의 수단입니다.
Bash의 체크인은 에포크 이후의 초를 가져오고 일수로 변환하고 모듈로 검사를 수행합니다. 계열의 두 기준 날짜에 따라 4일 계열(0,1,2,3)을 한 번에 수동으로 보정해야 합니다.
Paul--) cat day4
#! /bin/bash
Day=$(( $( date '+%s' ) / 86400 ))
(( Day % 4 == 0 )) || exit 0
printf 1>&2 'Starting task for day %d (%d)\n' "${Day}" "$(( Day % 4 ))"
Paul--) ./day4
Starting task for day 18416 (0)
Paul--)