cron 작업의 경우 다음과 같이 시간을 설정할 수 있습니다.
# +------------ Minute (0 - 59)
# | +---------- Hour (0 - 23)
# | | +-------- Day of the Month (1 - 31)
# | | | +------ Month (1 - 12)
# | | | | +---- Day of the Week (0 - 7) (Sunday is 0 or 7)
# | | | | |
# * * * * * command
내가 알고 싶은 것은 우리가 31 일의 날을 설정할 때, 그 달에 31 일이 없는데도 매월 말을 의미한다는 것입니다. 답을 얻을 수 있기를 바랍니다.
미리 감사드립니다
답변
아니요, 31은 31을 의미합니다.
그러나 약간의 속임수를 쓸 수 있습니다. 잠재적으로 해당 월의 마지막 날 (예 : 월-일 필드에서 28-31 일 수 있음)에 작업이 실행되도록 설정 한 다음 명령을 명령:
0 0 28-31 * * [ "`date +%m`" != "`date --date=tomorrow +%m`" ] && command
테스트 괄호 안의 표현식은 오늘의 월 번호가 내일의 월 번호와 다른지 묻습니다. 물론 해당 월의 마지막 날에만 적용됩니다. 이 표현의 형식은 지역에 따라 다릅니다 date
. 현재 GNU 버전이 없으면 수정해야 할 수도 있습니다.
나는 이것을 발명하지 않았다고 말해야한다-Matthew Jarvis의 메일 링리스트 게시물에서 빠른 Google로 찾았습니다. 그러나 이것이 표준 표준 유닉스 마법사의 트릭이라고 생각합니다.
답변
아니요, 당신이 할 수있는 최선의 방법은 매월 1 일 자정에 실행하거나 매월 개별 crontab 라인을 설정하는 것입니다 (또는 적어도 28,29,30 및 31 일이있는 달의 라인).
0 0 28,29 2 * /my/command
0 0 30 4,6,9,11 * /my/command
0 0 31 1,3,5,7,8,10,12 * /my/command
답변
나는 당신이 이것을 쉽게 할 수 있다고 생각하지 않습니다 crontab
.
한 가지 옵션은 cron
매일 스크립트를 실행 하도록 설정 한 다음 스크립트가 해당 월의 마지막 날인지 확인하도록하는 것입니다.
답변
cron에는이 목적을위한 특수 문자 ‘L’이 있습니다.
* * L * * your_script.sh
매월 마지막 날에 스크립트를 실행합니다
반면에
* * 0 * * your_script.sh
다음과 같이 지정할 수도 있습니다.
* * * * 1,5L your_scrript.sh
매월 마지막 월요일과 금요일에 스크립트를 실행
또는
* * * * 1 your_script.sh
매주 월요일 자정에 스크립트를 실행합니다.
답변
이것은 일을 할 것입니다 :
if [ $( date +%-d --date="tomorrow" ) -eq 1 ]
then echo Last day of the current month
else echo Not yet!
exit 0
fi
exit 1