Linux cron 매달 말일에만 자동 실행 설정 방법

리눅스에서 자동 실행을 하기 위한 방법으로 많이 사용하는 것이 cron 스케줄입니다.

crontab에 날짜와 시간을 설정해두면, 해당 날과 시간에 설정한 처리가 자동으로 실행이 됩니다.

매달 1일에 실행하는 스케줄을 설정하고 싶은 경우에는 crontab 매달 1일이라고 작성하면 됩니다.

0 0 1 * * 실행하고 싶은 커맨드

 

매달 마지막 날에 스케줄을 설정하고 싶은 경우가 있습니다.

하지만 매달 마지막 날은 다릅니다.

30일인 경우도 있고, 31일인 경우도 있습니다.

그리고 2월은 28일이 마지막 날입니다.

만약 윤달일 경우는 29일이 마지막이 됩니다.

이렇게 마지막 달은 일정하지가 않기 때문에 crontab에 설정을 할 때에 test 커맨드와 date 커맨드를 사용해 마지막 날에만 실행할 수 있는 스케줄을 작성해줍니다.

28일부터 31일 사이에 실행하며, 다음날이 1일인 경우에만 커맨드를 실행.

crontab 작성 방법은 아래와 같습니다.

0 0 28-31 * * /usr/bin/test $(date -d ‘+1 day’ +%d) -eq 1 && 실행하고 싶은 커맨드

 

이 크론을 설정하면 28일부터 31일 사이에 스케줄러가 실행이 됩니다.

실행될 때 현재 날짜를 취득하며, 취득한 날에 하루를 더합니다.

하루를 더한 날이 1일이 되면 현재 날짜가 해당 달에 마지막 날짜라고 판단을 하고 작성한 실행 커맨드를 실행하게 됩니다.

댓글