특정 프로세스가 실패하는 이유를 이해하는 데 어려움을 겪고 있습니다. 기본적으로 스크립트에는 디렉터리 내용을 나열하고 tee
출력을 두 파일로 리디렉션하는 줄이 있습니다.
retval=`ls -1 $SOURCE_DIR/${2}/${3} | tee ${COPY_LIST} ${MOVE_LIST}`
명령은 명령줄에서 제대로 실행되며 두 파일이 모두 채워집니다(약 8K 줄). 이상하게도 cron을 통해 스크립트는 단지 "정지"되고 파일을 확인하여 동일한 디렉터리의 부분 목록(약 3,000개 레코드)만 생성합니다. 마지막 줄도 부분적으로 작성되었으며 완전히 작성되지 않았습니다. 문제가 내부에 있는지 확실하지 않습니다 tee
.
#!/bin/ksh
#DAILY RUN
#DEBUG_SCREEN=ON
LOG_FILE=/daily_archive_v2_`date +%d-%m-20%y`.log
. /stdlib.ksh
##the datetimestamp for the file that contains the list of files to be archived
LIST_TIMESTAMP=`perl -e 'use POSIX qw(strftime); print strftime "%Y%m%d_%H%M",localtime(time());'`
Month_value=`date +%m`
typeset -i Prev_Month_value_tmp=`date +%m`
Prev_Month_value_tmp=${Prev_Month_value_tmp}-1
Year_value=`date +%y`
if [[ "${Month_value}" -eq 01 ]] then
echo "Month is January"
typeset -i Prev_Year_value=${Year_value}-1
Prev_Month_value_tmp=12
else
Prev_Year_value="${Year_value}"
fi
if [[ "${Prev_Month_value_tmp}" -le 10 ]] then
echo "Prev month is less than 10"
Prev_Month_value="0${Prev_Month_value_tmp}"
else
Prev_Month_value="${Prev_Month_value_tmp}"
fi
echo Previous Month Value = $Prev_Month_value
echo LOGFILE NAME SET TO $LOG_FILE
echo "DAILY REPORT [Archiving Month ${Month_value}]"
log "DAILY REPORT [Archiving Month ${Month_value}]"
log_line
SOURCE_DIR=/test
DEST_DIR=/Archives/month_"${Month_value}"_20"${Year_value}"
BACKUP_DIR=/vault/month_"${Month_value}"_20"${Year_value}"
mkdir -p $DEST_DIR
mkdir -p $BACKUP_DIR
COPY_LIST="${LIST_TIMESTAMP}_output_archiving.copy.lst"
MOVE_LIST="${LIST_TIMESTAMP}_output_archiving.move.lst"
#PARAMS : NAME, DIR, MASK
function move_files
{
DEST_DIR=/month_"${Month_value}"_20"${Year_value}"
FILES_COUNT=`ls -1 $SOURCE_DIR/$2/$3 | wc -l`
if [ "${FILES_COUNT}" != "0" ]; then
log "MOVE $FILES_COUNT $1 FILES $SOURCE_DIR/$2/$3 to $DEST_DIR/$2"
log "MOVE $FILES_COUNT $1 FILES $SOURCE_DIR/$2/$3 to $BACKUP_DIR/$2"
mkdir -p $DEST_DIR/$2
mkdir -p $BACKUP_DIR/$2
retval=`ls -1 $SOURCE_DIR/${2}/${3} | tee ${COPY_LIST} ${MOVE_LIST}`
#echo retval=`ls -1 $SOURCE_DIR/${2}/${3} | tee ${COPY_LIST} ${MOVE_LIST}`
# while read line
# do
# CURRENT_FILE=`echo $line`
# #echo ${CURRENT_FILE}
# cp -p ${CURRENT_FILE} $BACKUP_DIR/$2
# mv ${CURRENT_FILE} $DEST_DIR/$2
# log "File ${CURRENT_FILE} copied to $BACKUP_DIR/$4/"
# log "File ${CURRENT_FILE} moved to $DEST_DIR/$4/"
# done < ${COPY_LIST}
else
echo Nothing to move
fi
# gzip $DEST_DIR/$2/*
# gzip $BACKUP_DIR/$2/*
}
move_files "TESTDIR" "dir2/test" "*.txt"
\rm -f $RESULTS_FILE
\rm -f $FILE_LIST
#rm -f $LOG_FILE