상세 컨텐츠

본문 제목

shell script 로그 수집 개선

ETC

by jeonghojin 2022. 6. 14. 09:54

본문

매 5분 간격으로 python 프로그램을 통해 환율을 수집해오고 있고, 로그가 쌓이고 있다.

 

개선 전, 날짜 구분없이 한 파일에 계속 누적하여 쌓고 있는 말도 안되는 상황이었다.

나중에는 결국 용량이 너무 커져 더이상 기록을 하지 못하는 상황이 되었다.

 

폴더가 있는지 체크 후,

매일 날짜별로 파일을 생성하도록 개선하였다.

해당 코드는 cron 스케줄러로 매일 23시 55분 미리 폴더 체크 후, 파일을 생성하도록 처리했다.

 

#!/bin/bash

# Selective Variable

LOGDIR=/home/cosmo/apps/reuters/log  # 로그가 저장될 디렉토리
SYSLOGDIR=/home/cosmo/apps/reuters/log/syslog #ㅇ갱신 과정을 담을 로그의 디렉토리
SYSLOG=syslog #갱신과정을 담을 로그
ERRLOGDIR=/home/cosmo/apps/reuters/log/errlog #갱신 과정중 에러를 담을 로그의 디렉토리
ERRLOG=errlog #갱신 과정 중 에러를 담을 로그
SHELLDIR=/home/cosmo/apps/reuters/script #로그로 ㄷ남길 대상 쉡 스크립트가 ㅇ들어있는 디렉토리
FILENAME=market_price
# Variable

NOW_NAME=`date -d '1 day' '+%Y%m%d_'`
NOW_LOG=`date '+%Y-%m-%d %H:%M:%S'`
YEAR=`date '+%Y'` # 연도
MONTH=`date '+%m'` # 월

SHELLFILE=$(ls $SHELLDIR)

# Command
for SHELLNAME in $SHELLFILE
do
	LOGNAME=${SHELLNAME%%.*}

	if [ ! -d "$LOGDIR" ]; then #Directory making
		echo [$LOGNAME is not exist]
		mkdir $LOGDIR/$LOGNAME

		if [ $? -eq "0" ];then
			echo [$NOW_LOG":  "make directory $LOGNAME ] >> $SYSLOGDIR/$SYSLOG.log
		else
			echo [FAILED $NOW_LOG ":  "failed make directory $LOGNAME ] >> $ERRLOGDIR/$ERRLOG.log
		fi 
	fi
	
	
	if [ ! -d "$LOGDIR/$LOGNAME/$YEAR" ]; then # Directory YEAR
		echo [$LOGNAME/$YEAR is not exist]
		mkdir $LOGDIR/$LOGNAME/$YEAR
		
		if [ $? -eq "0" ];then
			echo [$NOW_LOG":  "make directory $LOGNAME/$YEAR ] >> $SYSLOGDIR/$SYSLOG.log
		else
			echo [FAILED $NOW_LOG ":  "failed make directory $LOGNAME/$YEAR ] >> $ERRLOGDIR/$ERRLOG.log
		fi 
	fi
	
	if [ ! -d "$LOGDIR/$LOGNAME/$YEAR/$MONTH" ]; then # Directory MONTH
		echo [$LOGNAME/$YEAR/$MONTH is not exist]
		mkdir $LOGDIR/$LOGNAME/$YEAR/$MONTH
	
		if [ $? -eq "0" ];then
			echo [$NOW_LOG":  "make directory $LOGNAME/$YEAR/$MONTH ] >> $SYSLOGDIR/$SYSLOG.log
		else
			echo [FAILED $NOW_LOG ":  "failed make directory $LOGNAME/$YEAR/$MONTH ] >> $ERRLOGDIR/$ERRLOG.log
		fi 
	fi


	touch $LOGDIR/$LOGNAME/$YEAR/$MONTH/$NOW_NAME$FILENAME.log #Log file making

	
	if [ $? -eq "0" ];then
		echo [$NOW_LOG":  "making logfile OK $LOGNAME/$YEAR/$MONTH ] >> $SYSLOGDIR/$SYSLOG.log
	else
		echo [FAILED $NOW_LOG":  "failed make logfile $LOGNAME/$YEAR/$MONTH ] >> $ERRLOGDIR/$ERRLOG.log
	fi
	

	chmod 777 $LOGDIR/$LOGNAME/$YEAR/$MONTH/$NOW_NAME$FILENAME.log #Logfile permission
	

	if [ $? -eq "0" ];then
		echo [$NOW_LOG":  "permission logfile OK $LOGNAME/$YEAR/$MONTH ] >> $SYSLOGDIR/$SYSLOG.log
	else
		echo [FAILED $NOW_LOG ":  "failed permission logfile $LOGNAME/$YEAR/$MONTH ] >> $ERRLOGDIR/$ERRLOG.log
	fi
done

 

 

※ crontab 설정 관련 참고 

 

관련글 더보기