2013-07-05 2 views
0

나는 내가 만든 python 패키지의 스크립트로 설치된 명령을 실행하고 있습니다. my_scrip_commandpip install my_py_package.tar.gzCronjob 내 Python 설치 스크립트 명령을 실행하지 마십시오

크론 줄을 사용하여 설치

touch a.txt 
my_script_command 

은 다음과 같습니다 : 나는 실행하는 경우

0 * * * * cronned_job_shell_script.sh 

cronned_job_shell_script.sh 쉘에서 잘 작동

은 내가 cronned_job_shell_script.sh 파일이 파이썬 스크립트도 실행합니다.

먼저 env -i /bin/bash --noprofile --norc을 시도한 다음 스크립트를 실행해도 작동합니다.

문제는 cron에서 예약 할 때 a.txt 파일을 건드리지 만 스크립트가 실행되지 않는 것입니다.

+0

'0 * * */bin/sh cronned_job_shell_script.sh'을 사용해 보셨나요? – fedorqui

+0

'my_script_command'는 어디에 있나요? 로그인 세션을 위해 PATH에있을 수 있지만 기본 PATH (또는 루트 사용자의 cron이 아닌 루트 cron 인 경우 루트의 기본 경로)가 아닌가? – abarnert

+0

한편, PATH에 의존하지 않고 절대 경로'/ opt/mystuff/bin/my_script_command'를 넣는 것이 좋을까요? – abarnert

답변

1

문제는 시스템 crontab에 넣는 것입니다. 즉 루트로 실행 중이며 루트에 사용자가 아닌 PATH 변수가 있습니다. 따라서 쉘에서 테스트하면 (루트가 아닌 것처럼) 실제로 같은 것을 테스트하지는 않습니다.

가장 쉬운 방법은 my_script_command 대신에 /opt/mystuff/bin/my_script_command 스크립트의 절대 경로를 사용하는 것입니다.

관련 문제