커피닉스, 시스템 엔지니어의 쉼터
  cron로그에 종료시간 남기기 작성일 : 2011/03/15 13:06
 
  • 글쓴이 : 좋은진호 ( http://coffeenix.net/ )
  • 조회수 : 10996
     
    제  목 : cron로그에 종료시간 남기기
    작성자 : 좋은진호(truefeel, http://coffeenix.net/ )
    작성일 : 2011.3.14(월)

    crontab에 설정한 명령은 언제, 어떤 명령이 실행되었는지 /var/log/cron파일에 로그로 남는다. 하지만, 언제 명령이 '종료'되었는지는 로그에 남지 않는다. 참고로 Linux(일반적인 경우), FreeBSD 모두 /etc/syslog.conf에 동일한 경로로 설정되어 있다. Ubuntu는 /etc/rsyslog.d/50-default.conf (Ubuntu는 기본적으로 /var/log/syslog에 남음)에서 설정할 수 있다.

     
    Mar 13 13:01:01 cnx1 crond[12406]: (root) CMD (run-parts /etc/cron.hourly)
    Mar 13 14:01:01 cnx1 crond[12416]: (root) CMD (run-parts /etc/cron.hourly)
     





    1. cron로그에 종료시간 남기기

    Ubuntu는 cron데몬 실행할 때 Loglevel을 설정해서 남길 수 있다. -L 2 옵션을 추가하면 종료시간까지 로그로 남긴다.

     
    Mar 14 09:17:01 cnx2 CRON[28274]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
    Mar 14 09:17:01 cnx2 CRON[28272]: (root) END (   cd / && run-parts --report /etc/cron.hourly)
     


    RHEL(CentOS)와 FreeBSD처럼 Loglevel 옵션이 제공되지 않고, debugflag 옵션이 있으나 원하는 로그를 남기지 않았다. 그래서 logger명령을 이용해서 syslog에 종료시간을 남기도록 해봤다. logger는 syslog에 원하는 메시지를 남기는 명령이다. logger에 대해 자세한 글은 man page또는 '2. 참고 자료'를 읽어보기를 바란다.

    logger를 실행하는 1줄짜리 스크립트를 만든다.

    [ /root/bin/l.sh ]
     
    logger -p cron.notice "crond[$1] END (result code : $2)"
     


    그리고, crontab을 수정한다. /etc/crontab 수정한 예이다. /root/bin/settime.sh 뒤에 ;/root/bin/l.sh $$ $? 를 추가해주면 된다. 즉, 원래 명령이 종료되면 바로 로깅을 하게 되는 것이다. 만약 /root/bin/settime.sh > /dev/null 로 설정되어 있다면, /root/bin/settime.sh; /root/bin/l.sh $$ $? > /dev/null 처럼 명령 뒤에만 붙여주면 된다.

     
    2   *   *   *   *   root   /root/bin/settime.sh;/root/bin/l.sh $$ $?
     


    cron 로그 파일에 남은 흔적이다.

     
    Mar 14 17:02:01 cnx1 crond[30081]: (root) CMD (/root/bin/settime.sh;/root/bin/l.sh $$ $?)
    Mar 14 17:02:01 cnx1 logger: crond[30081] END (result code : 0)
     




    2. 관련 자료

    * [기초] 작업 자동화, cron 설정 (crontab 명령) (2003.10, 글 좋은진호)
      http://coffeenix.net/board_view.php?bd_code=97
    * 매달 마지막일에 crontab을 수행하려면 (2004.1, 글 보리수)
      http://coffeenix.net/board_view.php?bd_code=173

    * 쉘에서 실행한 명령을 syslog로 자동 보내기 (logger활용) (2008.11, 글 좋은진호)
      http://coffeenix.net/board_view.php?bd_code=1659


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