2012-05-04 2 views
0

open jdk 및 crontab을 사용하여 Ubuntu 10.10을 실행하고 있습니다. 나는 멋진 것들을 수행하고 runnable jar 파일로 export 한 깔끔한 자바 애플리케이션을 만들었다. 명령 줄에서 실행할 수는 있지만 파일을 매일 한 번 실행하는 것이 필요했습니다. 그래서 실제로 jar 파일을 호출 할 쉘 스크립트를 실행하기 위해 cron 작업에 썼습니다. 쉘 스크립트는 자체적으로 실행할 때 잘 작동하며 다음과 같이 보입니다.jar 파일을 실행하는 crontab 오류

#!/bin/sh 
/usr/bin/java -jar /root/proj/CoolStuff.jar 

완벽하게 작동합니다. 그래서 이것을 crontab에 추가했습니다 :

23 14 * * * /root/proj/runScript.sh > /root/proj/log.txt 2>&1 

이것은 완벽하게 실행되지 않습니다. 사실, 실행되지 않습니다. log.txt는 "Error"라고 말합니다. 꽤 정체가 맞지, 그렇지? 내 환경 변수를 검사했는데 그곳에선 아무 것도 없다. 제가 놓칠지도 모르는 것이 있습니까? 여기에서 어디로 가야할지에 대한 아이디어가 있습니까? 매일이 스크립트를 쉽게 실행할 수있는 방법이 있습니까?

답변

0

해당 파일에 대한 실행 권한을 확인하십시오.

크론은 로그인 할 때이 없어 하나, 다른 권한으로 실행됩니다.

또한 액세스/루트보십시오. 스크립트를 다른 "루트가 아닌"디렉토리로 재배치하십시오.

+0

원래 루트가 아닌 모든 디렉터리에 파일이 있지만 루트의 crontab에서이 스크립트를 실행하고 있습니다. 또한 모든 권한은 해당 파일에 대해 777 개입니다. – user850275

+0

좋아요, 루트 crontab을 사용하면 모든 것이 잘 작동합니다. ( – cb0

+0

롤, 나도 알아?;) – user850275

0

현재 /usr/bin/java ..을 주석 처리하고 set을 한 줄에 삽입하여 crontab의 모양을 확인하십시오.

이제 명령 줄에서 set > tmpEnvVarList.txt을 실행하고 log.txt에 표시된 것과 비교하십시오.

.profile 또는 .bash_rc (또는 기타)가 crontab에서 사용할 수없는 env vars를 설정한다는 것은 거의 확실합니다. 스크립트에 . .profile 등을 추가해야합니다.

cbO의 아이디어도 좋습니다.

이 정보가 도움이되기를 바랍니다.

+0

이것이 해결책이 될 것 같습니다. cron 환경에없는 환경 변수를 모두 내보내는 것만 큼 간단할까요? 실제로 PATH vars를 내보내는 중이었지만 위에 표시하지 않았습니다. – user850275

+1

실험을 수행하고 결과가 무엇인지 확인하십시오. 나는 어떤 것을 추가하는지 알아 내려고 노력할 것이다. $ HOME/.profile,. $ HOME/.bash_rc' 등으로 문제를 해결할 수 있습니다. 그런 다음 환경에 대한 변경 사항에 대한 코드가 복원됩니다. 또한 스크립트 헤더에'#!/bin/sh'이 있습니다. 당신은 리눅스 또는 유닉스에 있습니까? 리눅스라면, 왜'#!/bin/bash' 사용자가 아니겠습니까? 행운을 빕니다. – shellter

+0

나는 '을 (를) 추가했습니다. .profile '을 스크립트에 보내고 cron 작업의 출력을 캡처했습니다. 나는 'stdin : tty'가 아니고, 이제는 손으로 스크립트를 실행 한 후에받은 것보다 적은 환경 변수를 따른다. – user850275

관련 문제