Вопрос по linux – Запуск сценария casper.js из cron

4

Я пытаюсь запустить скрипт casper.js через cron. Все работает нормально, когда я запускаю скрипт вручную, но когда я запускаю его через cron, я получаю следующие ошибки:

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 вопрос, но не знаю, куда идти отсюда!

Ваш Ответ

3   ответа
4

вероятно, должны использовать абсолютный путь к вашему скрипту Каспера, что-то вроде:

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

Мои два цента.

Edit:

Хорошо, это было немного глупо. также можете установить собственный путь кphantomjs выполнимый, установивPHANTOMJS_EXECUTABLE переменная окружения:

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

Затем запустите ваш скрипт как обычно:

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

Подсказка: если ваш crontab работает от имени другого пользователя, убедитесь, что у него есть доступ к пути phantomjs.

Надеюсь, что это помогает (и работает).

Edit again

Подождите, трассировка стека, которую вы получите, говорит, что вы используете старую версию CasperJS (например,subprocess модуль больше не используется). Попробуйте использовать более свежую версию & # xA0; :)

Error: User Rate Limit Exceeded Pezholio
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded Pezholio
Error: User Rate Limit Exceeded
2

более старый вопрос, но я тоже занимался этим некоторое время. Я больше не мог перезапустить Apache (для Django) через cron (поговорим о времени простоя), и это закончилось проблемой. Вместо сценария-обёртки, который использовал Jesse Q, я просто добавил свой PATH из casperjs / phantom-augmented в верхнюю часть моего 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

и теперь это работает. Вы можете проверить свою среду cron, записав файл в crontab следующим образом:

* * * * * env > ~/cronenv

просто посмотрите в него, чтобы увидеть, каков ваш текущий cron PATH. Приятно отлаживать эту проблему.

3

но он все еще актуален - я просто потратил 4 часа, пытаясь решить эту проблему, не найдя прямого решения. То, что происходило для меня, было точно таким же, я мог запустить скрипт casper.js из командной строки оболочки, но не через задание cron. Как намекает NiKo, но недостаточно четко изложеныme вgetКаспер должен знать, где Phantomjs, чтобы работать.

Я создал скрипт оболочки cron_wrap.sh, который содержит путь к каталогу bin Phantomjs:

#!/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

Сделайте ваш .sh исполняемым, теперь вы можете добавить скрипт в cron:

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

Похожие вопросы