복호화 코드 내부에 파일 임시 저장 경로가 포함되어 있다.
해당 디렉토리 안에 파일이 점차 쌓일 거고,
성능 저하 문제가 생기거나 용량이 꽉 차 솔루션에 문제가 생길 것 같아
임시 저장 경로 내부의 파일들을 삭제하는 쉘 파일을 이용하였다.
#!/bin/sh
HOMEDIR=/home/utils/deleteBatch
DELDIR=/app/temp
SHELL=del_batch.sh
LOGDIR=/logs # 로그 파일들이 저장될 디렉토리
LOGFILE="${LOGDIR}/del_log"
Interval=300
Inv_Cnt=0
MAX_LOG_FILES=50
cd ${HOMEDIR}
# 날짜별 백업 로그 파일 생성 함수
backup_logfile_if_new_day() {
current_date=$(date '+%Y%m%d') # 현재 날짜를 YYYYMMDD 형식으로 저장
last_mod_date=$(date -r ${LOGFILE} '+%Y%m%d' 2>/dev/null) # 로그 파일 마지막 수정 날짜
# 로그 파일이 존재하고, 날짜가 변경되었을 때 백업
if [ -f "${LOGFILE}" ] && [ "${current_date}" != "${last_mod_date}" ]; then
mv ${LOGFILE} "${LOGDIR}/del_log_${last_mod_date}.log" # 이전 날짜 형식으로 파일명 변경
fi
}
# 로그 파일 개수 확인 및 오래된 로그 삭제 함수
manage_log_files() {
log_count=$(ls ${LOGDIR}/del_log_*.log 2>/dev/null | wc -l)
if [ ${log_count} -gt ${MAX_LOG_FILES} ]; then
oldest_log=$(ls -t ${LOGDIR}/del_log_*.log | tail -1)
rm -f ${oldest_log} # 가장 오래된 로그 파일 삭제
fi
}
if [[ $1 = 'start' ]]
then
echo "----------------------[start]-----------------------"
echo "Starting Process Monitoring......[`date +%H:%M:%S`]"
TimeDay=`date '+%Y%m%d%H%M'`
echo "Start Time : ${TimeDay}"
if pgrep -f "${HOMEDIR}/${SHELL} mon" > /dev/null; then
echo "[Error] Process Monitoring is already running."
exit 1
fi
${HOMEDIR}/${SHELL} mon &
echo "----------------------------------------------------"
elif [[ $1 = 'stop' ]]
then
echo "----------------------[stop]------------------------"
PID=`ps -ef | grep "${HOMEDIR}/${SHELL} mon" | grep -v grep | awk '{print $2}'`
echo ${PID} "Process Monitoring killed......[`date +%H:%M:%S`]"
kill -9 ${PID}
echo "----------------------------------------------------"
elif [[ $1 = 'mon' ]]
then
while [ 1 ]
do
backup_logfile_if_new_day
manage_log_files
if [[ "$Inv_Cnt" == '1' ]]
then
current_time=`date '+%Y/%m/%d %H:%M:%S'`
before_count=`ls ${DELDIR} | wc -l`
find ${DELDIR} -type f -amin +5 | xargs rm -f
after_count=`ls ${DELDIR} | wc -l`
echo "!!!System Current Time :: ${current_time}" >> ${LOGFILE}
echo "Delete Before Count :: ${before_count}" >> ${LOGFILE}
echo "Delete After Count :: ${after_count}" >> ${LOGFILE}
fi
Inv_Cnt=1
sleep ${Interval}
done
elif [[ $1 = "status" ]]
then
echo '-------------------[Status ss_batch Process]---------------------'
PID=`ps -ef | grep "${HOMEDIR}/${SHELL} mon" | grep -v grep | awk '{print $2}'`
CNT=`ps -ef | grep "${HOMEDIR}/${SHELL} mon" | grep -v grep | grep -v status | wc -l`
if [[ $CNT -gt 0 ]]
then
echo "Program ${SHELL} is Alive...${CNT}...${PID}"
else
echo "Program ${SHELL} is Dead...${CNT}"
fi
echo '-----------------------------------------------------------'
elif [[ $1 = 'time' ]]
then
echo '-------------------[System Time]---------------------'
echo "System Current Time......[`date '+%Y/%m/%d %H:%M:%S'`] "
echo '-----------------------------------------------------'
else
echo "invalid command => del_batch.sh start|stop|status|time"
fi
exit 0
* 이미 쉘이 실행되어 있을 경우, exit를 만나도록 수정
* 날짜별로 로그 파일이 나눠지도록 수정
* 로그 파일이 50개 이상이 될 경우 삭제
'Server' 카테고리의 다른 글
| CentOS 7.7 에서 db2 설치하기 (0) | 2025.04.16 |
|---|---|
| LINUX 환경 변수 설정 (0) | 2024.11.25 |
| AIX 에서 db2 script 실행하는 쉘 파일 (0) | 2024.08.12 |
| db2 서버에서 실행 (0) | 2024.07.16 |
| compile, 실행 쉘 (0) | 2024.07.12 |