두 번째 수요일마다 Cron을 운영합니까?


9

매월 둘째 주마다 작업을 수행 할 수있는 방법을 찾아야합니다. 이것이 가능한가?

linux  cron 

1
질문 은 적절한 답변을 제공하는 것으로 보입니다.
scurker

1
예, 그러나 그 질문은 Wed가 아닌 Tue에 관한 것입니다.) 그러나 대답은 영리합니다.
edoloughlin

>> 예, 그러나 그 질문은 Wed가 아닌 Tue에 관한 것입니다.) 그러나 받아 들여진 대답은 영리합니다.
ajreal

0 * * * 3 test $ (date \ + % u) -eq 3 && echo "start run me"이것을 시도하십시오. 하나의 라이너 질문이 꽤 모호하기 때문에 답변에 붙여 넣지 않았습니다.

답변:


14

crontab에 대한 내 맨 페이지 (슬프게도 온라인에서 찾을 수없는 것)는 다음 예제를 제공합니다.

# Run on every second Saturday of the month
0 4 8-14 * *    test $(date +\%u) -eq 6 && echo "2nd Saturday"

이것을 귀하의 목적에 맞게 조정하는 중 ...

0 4 8-14 * *    test $(date +\%u) -eq 3 && job.sh

3
이 답변을 편집하려는 사람에게 요일 필드를 사용하지 않는 이유는 요일과 요일이 모두 제한되어 있거나 (예 : 아닌 *경우) 둘 중 하나가 일치 할 때 명령이 실행되기 때문입니다. .
Hasturkun


1
나는 % u를 탈출해야한다는 것을 알았다.date +\%u
Antony D' Andrea

3

요일 트릭과 요일을 조합하여 외부 스크립트를 실행하지 않아도됩니다.

# Run on every second Wednesday of the month
0 4 8-14 * Wed job.sh

또한 다른 외부 프로그램을 실행하지 않아도됩니다. 8-14는 매월 둘째 주와 일치하는 모든 요일을 선택합니다. 그런 다음 수요일에 걸러냅니다.


이에 따라 : crontab.guru , cron매일 작업을 실행합니다 : 8,9,10,11, ..., 4am에 (14). 따라서 하나가 아닌 7 개의 호출입니다. 프로덕션에서 테스트하고 싶지 않습니다))
maxkoryukov

1

cron을 단독으로 사용할 수는 없지만 일주일에 한 번 테스트를 수행하는 스크립트를 호출 할 수 있습니다.

crontab에서 매주 수요일 12.00에 second_wed.sh를 실행하십시오.

0 12 * * 3 /home/you/bin/second_wed.sh

second_wed.sh에서 :

#!/usr/bin/env bash
day_of_month=`date +"%
if [ $day_of_month -gt 7 -a $day_of_month -lt 15 ]; then
  # Call your program here instead of 'ls'…
  ls
fi

1

답변을 바탕으로 다음을 수행 할 수 있습니다.

00 12 * * Wed expr `date +\%d` \> 7 \& `date +\%d` \< 15 >/dev/null && runJob.sh

1

CentOS 7 서버의 경우 이것이 저에게 맞는 구문 인 것 같습니다. [및 주변의 공백에 유의하십시오 ]. 알아내는 데 시간이 걸렸습니다.

test.sh파일은 매월 둘째 수요일 13:07 / 1:07 PM에 파일을 실행합니다 . (0 = 일요일, 1 = 월요일, 2 = 화요일, 3 = 수요일 등)

07 13 8-14 * * [ `date +\%u` = 3 ] &&  /root/scripts/test.sh

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.