쉘 스크립트는 crontab에서 126 종료 코드를 반환합니다.

쉘 스크립트는 crontab에서 126 종료 코드를 반환합니다.

예약된 작업 항목:

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
* * * * *  /FinalSync.sh $(/bin/date --date="5 days ago" +\%d_\%m_\%Y) || echo $? >> log

또는

 * * * * *  /FinalSync.sh $(date --date="5 days ago" +\%d_\%m_\%Y) || echo $? >> log

둘 다 시도

로그 파일의 오류 코드는 126입니다.

쉘 스크립트

#! /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

ls -l@ilkkachu에 대한 검색결과

-rw-r--r-- 1 root root 299 Oct 17 16:20 /FinalSync.sh

답변1

이전 질문에 대한 내 의견에서 제안한 것처럼 오류 코드 126은 스크립트나 그 안에 있는 명령을 실행할 권한이 없음을 의미하는 것 같습니다(참조http://tldp.org/LDP/abs/html/exitcodes.html). 그런데 crontab그게 하나의 과정이라고 생각하기 때문에 이상해요 root. 다음을 시도해 보세요:

chmod +x /FinalSync.sh

이것이 도움이 될 수 있습니다. 그렇지 않으면 명령에서 문제가 발생할 수 있습니다 cp(어쩌면 쓰지 말아야 할 곳에 쓰려고 했을 수도 있습니다). 또한 \cp별칭을 피하십시오. 따라서 누가 스크립트를 시작하든 항상 동일하게 작동합니다.

관련 정보