crontab의 CLASSPATH

crontab의 CLASSPATH

에서 Java 프로그램을 실행할 수 없습니다 cron. 다음과 같은 간단한 예를 사용하여 문제를 재현할 수 있습니다.

파일에서 다음과 같이 변수를 /path/to/javaenv.txt정의합니다 .CLASSPATH

export CLASSPATH=\
"/path/to/dir1":\
"/path/to/dir2":\
"/path/to/dirn":\
"/path/to/jar1":\
"/path/to/jar2":\
"/path/to/jarn"

명령줄에서 다음을 수행하면 Java 프로그램을 매우 쉽게 실행할 수 있습니다.

source "/path/to/javaenv.txt" && java pkgName.ClassName cmd-line-params > /tmp/test-$(date +%s).txt 2>&1

cron그러나 내 항목에 다음이 있어도 crontab작업이 실행되지 않습니다 .

* * * * * source "/path/to/javaenv.txt" && java pkgName.ClassName cmd-line-params > /tmp/test-$(date +%s).txt 2>&1

답변1

크론 일정에 몇 가지 문제가 있습니다.

  1. 이 문자는 crontab에서 특별한 의미를 가지며 명령줄에서 정상적으로 사용하려는 %것처럼 이스케이프해야 합니다 . \%바라보다crontab 작업에서 "날짜"를 실행하는 방법은 무엇입니까?

  2. source계획의 명령은 이를 해석하는 쉘에서 지원되지 않을 수 있습니다. 이는 /bin/sh시스템의 쉘 에 따라 다릅니다 ( dash비표준 명령은 지원되지 않음 source). 명령을 이식 가능하게 만들려면 .(점) 대체를 사용해야 합니다 . source예를 들어 참조하십시오.cron에서 "소스"를 사용할 수 없나요?

  3. java세 번째 문제 는 cron 환경의 변수 값 에 따라 실행 파일을 찾을 수 있는지 여부일 수 있습니다 . 파일이 발견되었는지 PATH확인하려면 crontab의 올바른 디렉터리, 얻은 환경 파일을 포함하도록 java설정 하거나 절대 경로를 사용하여 실행 파일을 호출하세요.PATH

관련 정보