2015-04-13 4 views
-1

У меня есть Scrapy искатель на упругом приложение Beanstalk, что я могу работать по SSH, как это:Cronjob на Elastic Beanstalk не работает

  • source /opt/python/run/venv/bin/activate
  • source /opt/python/current/env
  • cd /opt/python/current/app
  • scrapy crawl spidername

Я хочу создать cronjob, чтобы запустить это для меня. Поэтому я следил за предложениями here.

Мой setup.config файл выглядит следующим образом:

container_commands: 
    01_cron_hemnet: 
    command: "cat .ebextensions/spider_cron.txt > /etc/cron.d/crawl_spidername && chmod 644 /etc/cron.d/crawl_spidername" 
    leader_only: true 

Мой spider_cron.txt файл выглядит следующим образом:

# The newline at the end of this file is extremely important. Cron won't run without it. 
* * * * * root sh /opt/python/current/app/runcrawler.sh &>/tmp/mycommand.log 
# There is a newline here. 

Мой файл runcrawler.sh расположен в /opt/python/current/app/runcrawler.sh и выглядит следующим образом

#!/bin/bash 

cd /opt/python/current/app/ 
PATH=$PATH:/usr/local/bin 
export PATH 
scrapy crawl spidername 

Я могу перемещаться до /etc/cron.d/ и посмотреть, что crawl_spidername существует. Но когда я запускаю crontab -l или crontab -u root -l, он говорит, что никакой кронтаб не существует.

Я не получаю ошибок журнала, ошибок развертывания и файла /tmp/mycommand.log, который я пытаюсь вывести cron, никогда не создается. Кажется, что cronjob никогда не запускается.

Идеи?

+0

Вы уверены, что ваш код является безошибочным? –

+0

Отсутствие ошибок в журнале, отсутствие ошибок развертывания, и я могу запускать «scraw crawl spidername» SSH без ошибок. Это просто, что cronjob не запускается, или, может быть, он запускается, но команда ничего не делает (?). Правильно ли писать команду * * * * * username path, как я это делаю? –

ответ

-1

Ваш spider_cron.txt имеет дополнительное пространство после /Opt/питон/ток/приложение/, но до Scrapy. Таким образом, команда бежится только папка "/ Opt/питон/ток/приложение /"

Yours

40 9 * * * root /opt/python/current/app/ scrapy crawl spidername > /dev/null 

Должно быть

40 9 * * * root /opt/python/current/app/scrapy crawl spidername > /dev/null 

ли вводить ТОЧНО "/Opt/питон/current/app/scrapy crawl spidername «Запустите свой сканер?

+0

Нет, Scrapy - это не файл в/app /. Это установленная команда. Ваше решение не работает, и оно неверно. Я только что обновил свой вопрос с некоторыми изменениями, которые я сделал, что все еще не работает. –

+0

Теперь вы отредактировали вопрос, который близок к работе. Если вы входите в систему и не меняете каталоги. Можете ли вы запустить свой скрипт, просто набрав «/opt/python/current/app/runcrawler.sh» –

+0

Он работает, если я делаю 'sudo crontab crawl_spidername' и добавляю его в корневой каталог crontab. Все работает нормально, если я это сделаю. Но кажется, что когда я просто поместил файл в '/ etc/cron.d /', его недостаточно, чтобы заставить cron загружать и запускать.Таким образом, это означает, что я должен войти в экземпляр и добавить cronjob каждый раз, когда я перезапускаю сервер или что-то в этом роде. –

Смежные вопросы