아래는 내 crontab 항목입니다.
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
* * * * * /FinalSync.sh $(date --date="5 days ago" +%d_%m_%Y) || echo $? >> log
로그 파일에도 오류가 없습니다.
쉘 스크립트
#! /bin/sh
source=/Source/$1
destination=/Destination
folderParam=$(basename $source)
if /usr/bin/rsync -avh -r $source $destination; then
cp /FolderCopyStatus/Success /Status/Success_$folderParam
else
cp /FolderCopyStatus/Failure /Status/Failure_$folderParam
fi
아래와 같이 명령줄에서 사용하면 스크립트가 완벽하게 실행됩니다.
sh /FinalSync.sh $(date --date="5 days ago" +%d_%m_%Y)
답변1
cron
모든 항목의 개행 문자 %
로 변환됩니다 . 다음을 사용하여 s를 이스케이프 처리 crontab
해야 합니다 .%
\
* * * * * /FinalSync.sh "$(date --date="5 days ago" +\%d_\%m_\%Y)"