에서 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
크론 일정에 몇 가지 문제가 있습니다.
이 문자는 crontab에서 특별한 의미를 가지며 명령줄에서 정상적으로 사용하려는
%
것처럼 이스케이프해야 합니다 .\%
바라보다crontab 작업에서 "날짜"를 실행하는 방법은 무엇입니까?source
계획의 명령은 이를 해석하는 쉘에서 지원되지 않을 수 있습니다. 이는/bin/sh
시스템의 쉘 에 따라 다릅니다 (dash
비표준 명령은 지원되지 않음source
). 명령을 이식 가능하게 만들려면.
(점) 대체를 사용해야 합니다 .source
예를 들어 참조하십시오.cron에서 "소스"를 사용할 수 없나요?java
세 번째 문제 는 cron 환경의 변수 값 에 따라 실행 파일을 찾을 수 있는지 여부일 수 있습니다 . 파일이 발견되었는지PATH
확인하려면 crontab의 올바른 디렉터리, 얻은 환경 파일을 포함하도록java
설정 하거나 절대 경로를 사용하여 실행 파일을 호출하세요.PATH