지연/오프셋 crontab */x는 특정 시간을 예약합니다.

지연/오프셋 crontab */x는 특정 시간을 예약합니다.

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--) 

관련 정보