2011-03-24 3 views
3

에서 내가 쉘 스크립트가 실패쉘 스크립트 따라서, 터미널에서 파이썬을 호출하지만 크론

export PYTHONPATH=/usr/local/lib/python 
cd /home/skip/workspace/UAM 
for file in *.txt 
do 
    echo $file >>log.fil 
    /usr/bin/python push.py -s $file 
done 
return 0 

은 명령 줄에서 제대로 실행됩니다. 각 파일 이름을 로그 파일에 인쇄하고 python push.py 명령을 예상대로 실행합니다. (이 디렉토리를 만들고 채 웁니다.)

을하지만이 crontab을 함께 크론에서 실행하려고하면

3 * * * * /home/skip/workspace/UAM/RunAllTest.sh 

내가 로그 파일의 항목을보고하고 있지만, push.py은 실행되지 않습니다 정확히. (디렉토리가 생성되거나 채워지지 않습니다.)

어떤 도움도 환영합니다.

답변

3

crontab 컨텍스트에서 설정할 수없는 환경 변수가 push.py에 필요하지 않은지 확인하십시오. 사용자 crontab (루트 cron이 아님) 인 경우 동일한 사용자가 해당 행을 실행 한 것처럼 실행되지만 동일한 환경 (초기화 파일의 별칭 및 경로와 같음)에 반드시 있어야하는 것은 아닙니다.

+1

환상적인.에서 그 많은 도움이 될 것입니다 것을 변경,하지만 영감 좀 더 자세히 파헤 치자. 나중에 더 자세히보고하겠다. (기본적으로 "push.py"가 수행해야 할 작업을 대부분 제거하면 cron 프로세스가 작동한다 .USELESS이지만 작동한다.) –

1

알 수 있습니다. 친절한 licorna의 도움에 감사드립니다.

내 "push.py"스크립트가 완전한 경로를 지정하지 않고 다른 프로그램 (pybot 일명 로봇 프레임 워크)을 호출하고있었습니다.

은 내가 내 실제 문제라고 생각하지 않습니다. "pybot"/ usr/지방/빈/pybot "모든이 작동합니다.

+1

스크립트에 sh 또는 bash를 사용하고 있는지 확인하십시오 (첫 줄은 포함하지 않음). Bash는 적절한 경로를 포함 할 수 있습니다. "초기화 파일에 설정된 경로"가 포함되어 있으므로 @ licorna의 대답을 받아 들일 것입니다. – chmullig