6 일 7 일과 8 일 영업일에 Cron 식 실행


0

저는 업무 일 기준으로 매 30 분마다 실행해야하는 cron 식을 작성하고 있습니다 (예 : 6 일, 7 일 및 8 일 영업일).

현재 나는 cron 표현을 가지고 있지만 영업일에 관계없이 그 달의 6 일, 7 일 및 8 일만 실행됩니다.

현재 cron 표현 - 0 0/30 * 6-8 *?

가장 가까운 영업일 표현을 사용해 보았습니다. 0 0/30 * 6W *? 하지만 다음과 같은 일정 기간 동안 작동하지 않습니다. 6W-8W .

이와 관련하여 도움이된다면 많은 도움이됩니다.

추신: 스크립트를 사용하여 작업하지 않으려 고합니다.


더 나은 형식을 만들 수 있습니까?
Toto

답변:


0

당신은 (또는 적어도 나는 어떻게 보는지 충분히 똑똑하지 않다) 할 수 없다.

cron-tab에는 사용자가 선택할 수있는 제약이 있습니다. 요일 .

모든 영업일은 일주일에 1 ~ 5 일이되지만 계산이나 표현이 필요하기 때문에 충분하지 않습니다.

6th, 7th, 8th day of (days-of-week:1-5) in this month

그래서 당신은 대본이 필요합니다.

$ cat /home/jaroslav/tmp/workday-567.sh
#!/bin/bash

jan01() { date +%s -d `date +%Y-01-01`; }
december() { echo $(($(jan01) + 365*24*3600)); }
day=`jan01`; december=`december`; 
today=${1:-$(date '+%Y-%m-%d')}

this_months_678th=$(
while [ $day -lt $december ];do
    date '+%Y-%m-%d %B %A %u' -d@$day;
    let day=$day+86400; 
done  |
sort -u |
sed -e "/[67]$/d; /$(date '+%Y-%m')/!d" |
sed -n -e '6p; 7p; 8p'
)

if echo -e "$this_months_678th" | grep -q $today; then
    exit 0
fi
exit 1

2018 년 11 월;

$ for i in 2018-11-{01..31}; 
    do bash /home/jaroslav/tmp/workday-567.sh $i && echo run on $i;
  done 
run on 2018-11-08
run on 2018-11-09
run on 2018-11-12

"6W"를 사용하여 6 일 이후의 다음 영업일을 얻으시겠습니까? crontab "* * / 30 *? * * * / script"항목을 추가하고 3 일 후에 해당 crontab을 제거하는 항목을 추가하는 스크립트를 실행하십시오. 단순 해 보입니다. crontab을 구문 분석하는 대신 /etc/cron.d/에 파일을 저장할 수 있습니다.
pbhj
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.