![매월 세 번째 주의 첫 번째와 마지막 이틀에 대한 크론 일정](https://linux55.com/image/214803/%EB%A7%A4%EC%9B%94%20%EC%84%B8%20%EB%B2%88%EC%A7%B8%20%EC%A3%BC%EC%9D%98%20%EC%B2%AB%20%EB%B2%88%EC%A7%B8%EC%99%80%20%EB%A7%88%EC%A7%80%EB%A7%89%20%EC%9D%B4%ED%8B%80%EC%97%90%20%EB%8C%80%ED%95%9C%20%ED%81%AC%EB%A1%A0%20%EC%9D%BC%EC%A0%95.png)
크론 계획을 작성하는 데 도움을 받을 수 있나요? 일정은 다음 위치에서 명령을 실행해야 합니다.
- 매월 첫째주 마지막 2일
- 매월 셋째주 마지막 2일
답변1
ISO 8601연도의 첫 번째 주를 1월 4일을 포함하는 주로 또는 >= 설날 4일을 포함하는 주로 정의합니다(또한 월요일에 시작하는 주를 정의하므로 두 정의는 동일합니다). "매월 첫 번째 주"에 대한 구체적인 정의가 없으므로 동일한 "월은 >= 4일" 규칙을 적용할 것을 제안합니다.
Cron은 이를 모르고 "월의 첫 번째 주" 또는 "월의 세 번째 주"에 대한 개념이 없기 때문에 이는 직접적으로 도움이 되지 않습니다. 당신이 할 수 있는 일은 지난 이틀 동안 스크립트를 실행하는 것입니다.각일주일에
0 1 * * 6,7 /path/to/my/script
그런 다음 날짜 기반 계산을 수행하여("매월 첫 번째 주" 정의에 따라) 스크립트가 즉시 종료되어야 하는지 아니면 실제로 실행되어야 하는지 결정합니다.
위의 ">= 4일" 규칙을 사용하면 /bin/sh에서 다음과 같은 것을 사용할 수 있습니다.
d=$(date +%d)
if [ "$d" -ge 3 ] && [ "$d" -le 10 ]; then
# 1st week
elif [ "$d" -ge 17 ] && [ "$d" -le 24 ]; then
# 3rd week
else
exit
fi