커피닉스, 시스템 엔지니어의 쉼터
  매달 마지막일에 crontab을 수행하려면 작성일 : 2004/01/19 16:07
 
  • 글쓴이 : solaris ( http://solaris.mesani.net/ )
  • 조회수 : 12238
     
    정리: 보리수

    월의 마지막 날은 불규칙하다. 그럼에도 불구하고 마지막 날에 반드시 처리해야 한다면 다음의 두가지 방법이 있다.

    1. 특별히 문제되지 않는다면, 매달 처음 날 1일에 수행하도록 한다.

    2. 날짜를 체크하여 마지막날 수행하도록 한다.

    원리는 crontab에 매일 날짜를 체크하여 조건에 맞으면 명령어를 수행하도록 하는 것이다.

    1) GNU의 date를 사용하는 경우
    GNU date는 shutils 패키지(http://www.sunfreeware.com)를 설치하면 된다.
    GNU의 -d tomorrow 옵션을 이용하여 crontab에 다음과 같이할 수 있다.

     
    0 23 * * * if [ `/usr/local/bin/date +%d -d tomorrow` = 01 ] ; then your_command; fi
     


    2) Solaris 의 date를 쓰는 경우

     
    0 23 * * * if [ `env TZ=$TZ-24 date +%d` = 01 ] ; then your_command; fi
     


    3) 스크립트를 이용하는 경우

     
    0 23 * * * some_your_script
     


    script 예)
     

    lastday=`cal | egrep '^[2,3]' | tail -1 | awk '{print $NF}'`

    today=`date +"%d"`

    if [ "$today" = "$lastday" ]; then

    DO SOMETHING

    fi
     


    커피닉스, 시스템 엔지니어의 쉼터 / URL : http://coffeenix.net/board_view.php?bd_code=173