2016-12-23 2 views
0

기본 스크립트 내에서 hana.scr 스크립트를 호출 할 쉘 스크립트가 있습니다. hana.scr에는 아래 코드가 들어 있습니다.스크립트가 cron을 통해 실행되지 않습니다. 수동으로 실행하면 잘 작동합니다.

chmod 777 /data/auto/SLT.out; rm -rf /data/auto/SLT.out; hdbsql -n plhesappr61 -i 00 -u USR -p $#^F#$GGG -o /data/auto/SLT.out "Select sum("ERPACC_RPPCLNT200"."VABD"."NETWR") FROM "ACC_CLNT"."VFKH" inner join "ACC_CLNT"."VNRO" on ("ACC_CLNT"."VNRO"."VBELN"="ACC_CLNT"."VFKH"."VBELN") where FKART in ('ZFP1','ZFP3') and FKDAT = (select ADD_DAYS (TO_DATE (current_date, 'YYYY-MM-DD'), -1) "add_days" from dummy) group by FKDAT"; 

주 스크립트를 수동으로 실행하면이 스크립트를 올바르게 호출하고 SLT.out 파일도 생성됩니다. 하지만 hron.scr의 두 번째 명령 rm에 따라 이전 파일을 제거하지 않기 때문에 실행되지 않는 hana.scr을 제외하고 cron에서 일정을 잡으면 주 스크립트가 올바르게 실행됩니다. .

cron은 스크립트를 수동으로 실행하는 사용자와 동일합니다. cron이 실행 환경이 같지 않으면 이러한 문제가 발생한다고 읽었습니다. hana.scr로 실행하기 전에 사용자의 UNIX 프로필을 가져 오려고했지만 성공하지 못했습니다. hana.scr은 아래의 방법으로 실행

37 0,2,3,4,5,6 * * * /data/esb/auto/./main.sh R > /data/esb/auto/main.log 

사용 절대 경로 .. : :

./hana.scr; 
check6=$? ; 
           if [ $check6 = "1" ] 
             then 
               echo "***********HANA counts were not generated**********" 
           fi 
다음

은 내에서 hana.scr를 호출 주요 스크립트를 실행하는 cron 명령입니다
+0

이 main.log 무슨 일이 일어나는지 볼뿐만 아니라 크론 작업의 오류를 리디렉션합니다. – codeforester

+2

"main.sh"내부에는 "hana.scr"이 시작된 몇 가지 조건이 있습니까? "hana.scr"이 얼마나 정확하게 시작 되었습니까? "main.sh"가 먼저 실패하고 "hana.scr"이 시작될 것이기 때문에 "hana.scr"이 실행되지 않는 이유가있을 수 있습니까? – czvtools

+0

hana.scr이 아래의 방식으로 실행됩니다 : ./hana.scr; check6 = $? ; if [$ check6 = "1"] then echo "************************************************" fi – user3055262

답변

0

/data/esb/auto/./main.sh 뒤에 현재 디렉토리가 /data/esb/auto/으로 변경되지 않습니다. 나는 $PWD이 같은 곳에서 hana.scr 인 동안 명령 줄에서 main.sh을 시작했다고 생각합니다.

cd/
/data/esb/auto/main.sh 

와 명령 줄에서 테스트는 어떻게 해결합니까? 최악의 솔루션은 crontab에 대한 해결하지만 main.sh 여전히 다른 디렉토리에서 시작했을 때 실패

37 0,2,3,4,5,6 * * * cd /data/esb/auto; /data/esb/auto/main.sh R > /data/esb/auto/main.log 

로 crontab을 선을 변화하고 있습니다.
당신이 설정 파일을 편집하고 수리하는 데 필요한 폴더를 변경하면 당신이 hana.scr

myscriptdir=/data/esb/auto 
.. 
${myscriptdir}/hana.scr 

를 호출 할 때 약간 더 나은 main.sh의 전체 경로를 사용하고 있습니다.
당신은 어떤 디렉토리에 그것이 무엇인지 알아낼 main.sh 설정 몇 가지 설정 파일을 사용하거나 있도록 시도 할 수 있습니다 :
Getting the source directory of a Bash script from within

관련 문제