본문 바로가기
IT

JEUS 관련 LOG 1달 단위 자동 삭제 및 정리하는 방법

by 정봉식 2023. 7. 7.

0. 사전 이해

JEUS 8을 이용하고 있고 disk 사용량이 점점 늘어남에 따라 log를 지워줄 필요가 생겼다.

로그를 1달 단위까지만 보관하고 1달 이전의 로그는 스크립트를 통해 자동으로 삭제하도록 한다.

여기서, 데이터 연속성의 결함이 생길 수 있으나, 백업을 받고 있기 때문에 해결된다.

JEUS8에서는 주로 gc, access, jeusserver, jeusnodemanager, jspd 관련 로그들이 쌓인다.

Tmax JEUS 8

1. 사전 작업

$ su - root #root 계정으로 작업 $ mkdir /script

$ mkdir /script/log $ vi delete_log.sh

2. delete_log 내용 작성

#!/bin/sh

# 2.1) Loging Delete files on '/applog' dir

LOG=/script/log/delete_applog_file_$(date '+%Y-%m-%d').log

if [ ! -e "$LOG" ] ;then

touch $LOG

fi

# 2.2) The script that deletes logs indicating the deletion of logs older than 30 days.

echo " " >> $LOG

echo "#########################################" >> $LOG

date >> $LOG

echo " " >> $LOG

echo "#########################################" >> $LOG

echo "Delete 'log' files older than 30 days in the '/script/log'" >> $LOG

echo " " >> $LOG find /script/log -name "*.log" -ctime +30 >> $LOG

find /script/log -name "*.log" -ctime +30 -exec rm -f {} \;

echo " " >> $LOG

# 2.3) The script that deletes basic logs indicating the deletion of logs older than 7 days.

echo "# Start Delete files(*.phd, .txt, .dmp, .trc, .xml) order than 7days in the '/applog' directory#" >> $LOG

find /applog -name ".phd" -o -name ".txt" -o -name ".dmp" -o -name ".trc" -o -name "*.xml" -mtime +7 >> $LOG

find /applog -name "*.phd" -mtime +7 -exec rm -f {} \; find /applog -name "*.txt" -mtime +7 -exec rm -f {} \;

find /applog -name "*.dmp" -mtime +7 -exec rm -f {} \; find /applog -name "*.trc" -mtime +7 -exec rm -f {} \;

find /applog -name "*.xml" -mtime +7 -exec rm -f {} \;

# 2.4) The script that deletes jeus logs indicating the deletion of logs older than 30 days.

echo "# Start Delete files(Many different types of log file) order than 31 days in the '/applog' directory#" >> $LOG

find /applog/swdpt -name "*gc*.log_20*" -mtime +31 >> $LOG

find /applog/swdpt -name "access_20*.log*" -mtime +31 >> $LOG

find /applog/swdpt -name "JeusServer_20*.log*" -mtime +31 >> $LOG

find /applog/swdpt -name "JeusNodeManager_20*.log" -mtime +31 >> $LOG

find /applog/swdpt -name "jspd\[*\]-20*.log" -mtime +31 >> $LOG

find /applog/swdpt -name "*gc*.log_20*" -mtime +31 -exec rm -f {} \;

find /applog/swdpt -name "access_20*.log*" -mtime +31 -exec rm -f {} \;

find /applog/swdpt -name "JeusServer_20*.log*" -mtime +31 -exec rm -f {} \;

find /applog/swdpt -name "JeusNodeManager_20*.log" -mtime +31 -exec rm -f {} \;

find /applog/swdpt -name "jspd\[*\]-20*.log" -mtime +31 -exec rm -f {} \;

esc 누르고 :wq 하여 저장 !


* 스크립트 명령어 분석 *

스크립트에는 아래 2가지 명령어가 주된 구성이다.

1. find /directory 경로 -name "????" -mtime +31 >> $LOG

2. find /directory 경로 -name "????" -mtime +31 -exec rm -f {} \;

1. 명령어 부터 분석하자면, 해당 명령어는 삭제가 될 로그 파일을 찾아 지정된 경로(LOG)에 기록하는 명령어입니다.

find: 파일을 검색하는 명령어입니다.

/directory 경로: 검색을 시작할 디렉토리 경로입니다.

-name "????": 검색할 파일 이름 패턴을 지정합니다. 와일드카드(*)를 사용하여 어떤 숫자가 와도 상관 없음을 나타냅니다.

-mtime +31: 파일의 수정 시간이 31일 이전인 파일들을 찾습니다. 이 옵션은 파일의 수정 시간을 기준으로 일정 기간 이전에 수정된 파일들을 검색합니다.

>> $LOG: 찾은 삭제가 될 로그 파일들을 $LOG 에 추가해줍니다.

2. 명령어는 특정 경로에서 일정 기간 이상 수정되지 않은 파일을 검색하고 삭제하는 명령어입니다.

- `find`: 파일을 검색하는 명령어입니다.

- `/directory 경로`: 검색을 시작할 디렉토리 경로입니다. 여기서는 "/directory 경로"에 실제로 검색을 원하는 디렉토리 경로를 지정해야 합니다.

- `-name "????"`: 검색할 파일 이름 패턴을 지정합니다. 여기서는 "????"에 실제로 삭제하고자 하는 파일의 이름 패턴을 지정해야 합니다.

- `-mtime +31`: 파일의 수정 시간이 31일 이상인 파일들을 검색합니다. 이 옵션은 파일의 수정 시간을 기준으로 일정 기간 이상 수정되지 않은 파일들을 검색합니다.

- `-exec rm -f {} \;`: 검색된 파일들을 삭제하는 명령어입니다. `-exec` 옵션은 검색된 파일에 대해 지정된 명령어를 실행하라는 의미이며, `rm -f {}`는 검색된 파일을 강제로 삭제하는 명령어입니다. `\;`는 명령어 실행을 마침을 나타냅니다. 검색된 각 파일에 대해 순차적으로 삭제 명령어가 실행됩니다.

3. crontab 설정

$ chmod 755 delete_log.sh

$ crontab -e

- 아래 내용 추가

- 10 10 * * * /script/delete_log.sh

1., 2., 3. 을 정상적으로 처리하면 잘된다. 끝.