2011-11-02 4 views
0

testjob.shcrontab을 나던 작업

#!/bin/bash 
export JAVA_HOME=/usr/java/jdk1.6.0_07 
echo "Java Home is $JAVA_HOME" 
export CLASSPATH=.:..:$CLASSPATH: 
echo "Path is is $PATH" 
echo "CLASSPATH is is $CLASSPATH" 
$JAVA_HOME/bin/java TestJob 
echo "$JAVA_HOME/bin/java TestJob" 

의 crontab -e

* * * * * /usr/testjob.sh >> /usr/result.txt 2>&1 

내가 쉘 스크립트를 실행하는 경우 수동으로는 잘 실행하지만 crontab을 통해 실행시기 작업을 수행 할 때 클래스를 찾을 수 없으므로 오류가 발생합니다 ..

답변

3

이것 좀보세요. 일반 사용자가 "에 그대로 어떤 스크립트를 실행할 때 가지고

다시

Where can I set environment variables that crontab will use?

당신이 크론에서 동일한 환경을 가지고 있는지 확인 수있는이 http://linuxshellaccount.blogspot.com/2007/10/crontab-and-your-environment.html

\ 가장 쉬운 방법을 읽고 질문에 답해야 환경을 스크립트에 넣으려면 다음과 같은 라인을 추가하십시오 :

./etc/profile . /home/user/.profile

(#! 줄 아래). 리터럴의 점, 공간, 파일 이름 패턴은 셸이 해당 파일의 모든 변수를 읽도록 지시하므로 수동으로 테스트 할 때와 동일한 환경에서 cron 작업을 실행할 수 있으므로 위의 점 1과 2로 인해 발생하는 문제를 피할 수 있습니다 .

1

클래스 경로가 "."로 설정되었습니다. 와 ".."는 현재 디렉토리와 그 부모 디렉토리를 의미합니다. 따라서 로컬로 실행하면 특정 디렉토리에 있어야 작동 할 수 있습니다.

클래스 경로를 스크립트의 절대 디렉토리로 설정해보십시오.

당신은 또한 "수동"및 crontab을 통해 호출 할 때의 차이점을 설명하기 위해 당신의 testjob.sh 스크립트에

echo "Current directory: `pwd`" 

을 넣을 수있는 현재 디렉토리가있는 디렉토리를 확인합니다.