2012-05-22 3 views
4

나는 cron을 통해 casper.js 스크립트를 실행하려고합니다. 내가 수동으로 스크립트를 실행하면 모든 것이 잘 작동하지만 내가 크론를 통해 그것을 실행할 때 나는 다음과 같은 오류를 얻을 :cron에서 casper.js 스크립트 실행

Traceback (most recent call last): 
File "/usr/local/bin/casperjs", line 46, in <module> 
    status = subprocess.call(CASPER_COMMAND) 
File "/usr/lib/python2.6/subprocess.py", line 480, in call 
    return Popen(*popenargs, **kwargs).wait() 
File "/usr/lib/python2.6/subprocess.py", line 633, in __init__ 
    errread, errwrite) 
File "/usr/lib/python2.6/subprocess.py", line 1139, in _execute_child 
    raise child_exception 
OSError: [Errno 2] No such file or directory 

내 crontab 항목은 다음과 같습니다 나는 또한

을 시도했습니다

30 9 * * * /usr/local/bin/casperjs lib/fsaupload.js arg1 arg2 arg3

30 9 * * * python /usr/local/bin/casperjs lib/fsaupload.js arg1 arg2 arg3

동일한 결과가 나옵니다. 어떤 아이디어? 나는 그것이 path 이슈일지도 모른다고 생각하지만, 여기에서 어디로 가야할지 모릅니다!

답변

4

당신은 아마 당신의 캐스퍼 스크립트에 대한 절대 경로를 사용한다, 뭔가 같은 :

30 9 * * * /usr/local/bin/casperjs /absolute/path/to/lib/fsaupload.js arg1 arg2 arg3 

내 두 센트.

편집 :

좋아, 그것은 조금 바보였다.

$ export PHANTOMJS_EXECUTABLE="/path/to/phantomjs" 

그런 다음 평소와 같이 스크립트를 실행합니다 :

/usr/local/bin/casperjs /absolute/path/to/lib/fsaupload.js arg1 arg2 arg3 

힌트 : 당신의 crontab을 다른 사용자, 검사로 실행하면 당신은 또한 PHANTOMJS_EXECUTABLE 환경 변수를 설정하여 phantomjs 실행 파일에 사용자 정의 경로를 설정할 수 있습니다 그것은 phantomjs 경로에 액세스 할 수 있습니다.

희망이 있으면 도움이됩니다.

편집 다시

잠깐, 당신이 얻을 스택 추적 당신이 CasperJS의 이전 버전을 사용하고 말한다 (예.는 subprocess 모듈은 더 이상 사용되지 않습니다). 최신 버전을 사용해보십시오 :)

+0

흠 ... 아직 아무것도 없습니다. 나는 여전히 같은 오류가 발생합니다. 심지어 파이썬에 대한 전체 경로를 지정하려고 시도했지만 여전히 주사위를 사용하지 않았습니다. 어떤 아이디어? – Pezholio

+0

수정 됨, 계속 알려주세요 :) – NiKo

+0

그게 다예요 - 고마워요! :) – Pezholio

3

이것은 더 오래된 질문이지만 여전히 관련이 있습니다. 직접 해결책을 찾지 않고도이 문제를 해결하기 위해 4 시간을 보냈습니다. 나에게 일어난 일은 정확히 동일했지만 쉘 명령 행에서 casper.js 스크립트를 실행할 수는 있지만 cron 작업에서는 실행할 수 없었다. 니코가 언급했듯이, 에서 까지는이 나오기 때문에 캐스퍼는 Phantomjs가 작동하기 위해서 어디에 있는지 알아야합니다.

내가 Phantomjs bin 디렉토리의 경로를 포함하는 쉘 스크립트, cron_wrap.sh 작성 : 당신의 .sh 실행 파일을 확인

#!/bin/bash 
PATH=/usr/local/src/phantomjs/bin:/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin 
/usr/local/bin/casperjs --ignore-ssl-errors=true /srv/www/apps/myscript.js 

을, 지금 당신은 cron과 스크립트를 추가 할 수 있습니다

00 09 * * * /srv/www/apps/myscript.js 
2

이 질문은 나이가 들고 오래된 질문이지만 잠시 동안이 문제도 다루었습니다. 더 이상 아파치 (Django 용)를 cron (다운 타임에 대한 이야기)을 통해 다시 시작할 수 없었습니다. 결국 문제가되었습니다.제시 Q와 같은 래퍼 스크립트를 사용하는 대신, 난 그냥 내 crontab을

PATH=/usr/local/src/phantomjs/bin:/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin 
/usr/local/bin/casperjs 

의 TOP에 내 casperjs/팬텀 증강 PATH를 추가하고 그것을 작동합니다. 당신과 같이 crontab을에서 파일로 작성하여 크론 환경을 확인할 수 있습니다

* * * * * env > ~/cronenv 

그냥 정력 그것으로 현재 크론 PATH가 무엇인지 볼 수 있습니다. 이 문제를 디버깅 해 주셔서 감사합니다.

관련 문제