매 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 설정 관련 참고
using filesort, using temporary 제거 (0) | 2022.09.19 |
---|---|
The Tomcat connector configured to listen on port 9999 failed to start. (0) | 2022.07.28 |
[Ubuntu] crontab 현재 날짜 파일명으로 사용하기 (0) | 2022.06.03 |
동기/비동기, 블록/논-블록 (0) | 2022.05.27 |
정보처리기사 실기 - 10.애플리케이션 테스트 관리 (0) | 2022.04.20 |