반응형

작성일자 : 2020.09.12

환경 : CentOS, BASH Shell, Crontab

 

목표 :

  특정 경로의 생성된지 일정기간 이상 지난 파일(로그)들을 자동으로 삭제 

 

시나리오 :

  위의 목표를 수행하는 쉘 스크립트 생성해 데일리로 수행하도록 크론탭에 등록

 

  

1. 스크립트 작성

 

- deleteExpireFile.sh

 

#!/bin/bash

# ---------- Custom Config Option ----------

path="/myPath/myLogDirectory"
expire_days=30

# -----------------------------------------------


echo "Start deleteExpireFile.sh"
find ${path}/* -type f -mtime +${expire_days} -exec rm -f {} \;

echo "End deleteExpireFile.sh"

 

* find /path/* : /path 아래 모든 파일 검색

* -type f : 디렉토리는 제외하고 파일 타입만 검색하는 옵션

* -mtime +30 : 서버 시간 기준으로부터 생성된지 30*24 시간 이상된 파일/디렉토리 검색하는 옵션

* find ... -exec ... {} : find 의 결과에 특정 명령을 수행 ( {} 에 결과값이 들어감 )

  

 

2. crontab 설정

 

 

- 크론탭 추가 명령어 입력 ( 확인 명령어 : crontab -l )

 

> crontab -e

 

 

 

 

- 매일 0 시 0 분 deleteExpireFile.sh 실행하도록 설정

 

0 0 * * * /scriptPath/deleteExpireFile.sh

 

* crontab 로그는 /var/log/cron 에서 확인 가능

 

 

 

 

------

 

+ 스크립트 작성 없이, crontab에 직접 스크립트 내용을 넣어도 된다.

ex) 0 0 * * * find /myPath/* -type -f -mtime +30 -exec rm -f {} \;

반응형

'Linux' 카테고리의 다른 글

[Linux] Apache, Tomcat 연동 (mod_proxy 사용)  (0) 2018.09.16
[Linux] 계정 별 JDK 설정  (4) 2018.09.16
[Linux] telnet 사용  (0) 2018.09.16
[Linux] Node.js 설치  (0) 2018.09.16
[Linux] MongoDB 설치  (0) 2018.09.16

+ Recent posts