Justin의 개발 로그
#매일 오후 4시 48분에 /log/app의  5일 경과한 로그 삭제
48 16 * * * find /log/app -ctime +5 -exec rm -rf {} \;

 

crond은 정해놓은 주기 시간마다 반복적으로  프로그램을 수행하도록 하는 데몬입니다.

 

특정시간 파일을 지우는프로그램을 crond 에 등록 하기

 

 

 

crond은 crontab 라는 것으로 작업목록이 등록 됩니다.

   순서 : 1. 파일을 지우는 명령을 작성한다.

             2. crontab에 등록한다.

             3. crond 데몬을 재구동 한다. : 구동이 안된경우도 있으므로

  

 1. crontab 등록  방법

   # crontab 형식

  #  Min(0-59) Hour(0-23) Day(1-31) Mon(1-12) Week(0-6)   command

 

    5분 마다 command가 수행되도록 하는 방법을 예로 들어보면 
   1)   */5   *   *    *    *      command   

   2)   0,5,10,15,20,30,35,40,45,50,55  *   *  *  * command

   3) Week 0 또는 7이 일요일 1부터 월요일

 

   설명 :  

       command 앞에는 5가지 필드가  주기를 나타냅니다. ( 필드마다 스페이스로 구분)

       순서대로  분 시 일 월 주 를 가리킵니다. 

       그리고 각 주기는 아래와 같이 숫자로 또는 *  로 설정 합니다.

       * : 는 항상을 나타내고 숫자는 해당 위치에 따라 각 분 시 일 주 등을 나타냅니다.

       위의 내용은 매 */5 분 마다  매시간  매일 매월 매주 command를 수행하라입니다.      

 

2. 명령 작성

   crontab이 뭔지는 아셨지요 ?  (더자세한 것은  man 페이지를 참고 하시면 됩니다.)

    파일을 지워야 하니 command 대신 파일 지우는 command 또는 셀 스크립트를 작성 해야 합니다.

 

   error  파일은 그냥 두고 error.6405, error.16369 .. 들을 지우신다면

  

   파일의 내용을 지우거나 파일을 지우려면 아래 내용을 수정해서 쓰시면 됩니다.

 

   cat /home/work_bin/remove.sh

   ------------------------------

    #!/bin/bash

    # 파일을 삭제한다.  error.6405, error.16369 ..  

    find /home/work/    -name  error.*    -exec rm -rf {} \;

 

    #error 파일은  내용만 지운다  

    find /home/work/    -name  error    -exec cat /dev/null >  {} \;

    또는

    cat /dev/null  > error   

 

  [추가]

    특정한 파일이 특정 기간이 지난 것만 지우는 법

 

    find  [Dir]   -name error*  -ctime +n      : n day  이전에 생성된 파일

    find  [Dir]   -name error*  -mtime n       : n day  1일간 에 수정된 파일만

 

    find  [Dir]   -name error*  -ctime +30    : 30일 이전 파일들을 모두 찾는다.

 

     -  ctime  : 파일이 생성된 시간을 가진다.

     -  mtime 은 마지막 수정한 시간이다. 따라서 함부로 파일을 열고 닫으면서

     -  atime 은 마지막으로 access 된 시간이다 ( vi, cat ) 등으로  파일을 읽으면 변경됨.

      -  +n    : n days ago

      -   n    : n days ago

 

 

 3. 셀 스크립트를 테스트 해보셔야 합니다.

   파일 권한이 없어서 파일이 지워 지지 않는다면 root 계정에 cron 작업을 등록 해야 합니다.

  

 4. crontab -e 명령으로 

    아래중 원하는 내용을 등록 하시면 됩니다.

 

# 매 5 분마다

*/5   *   *    *    *    sh  /home/work_bin/remove.sh > /dev/null

 

# 매일 1시 마다 수행

0   1   *    *    *     sh  /home/work_bin/remove.sh > /dev/null

 

# 매일 오후 1시~4시  수행

0   13,14,15,16   *    *    *      sh /home/work_bin/remove.sh > /dev/null

 

 

5. crond  구동

------------------------------------------------------------------

 참고로 위사항은 의 crond 가 구동이 되어 있어야 수행합니다.

 

[root@dev5 ODBS22]# chkconfig --list crond
crond           0:해제  1:해제  2:활성  3:활성  4:활성  5:활성  6:해제

 

서비스가 구동 되도록 등록 되어 있는지 확인 하시고

(현재 런레벨 3 5 중에 해제 혹은 off 이면  구동이 안되고 있겠지요)

 

[root@dev5 ODBS22]# chkconfig --level 345  crond  on

[root@dev5 ODBS22]# /etc/rc.d/init.d/crond restart

 

하셔야 재부팅시도 crond가 계속 작동 됩니다.

 

                                           good Luck..!

profile

Justin의 개발 로그

@라이프노트

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!