#linux #ubuntu #cron #scheduling #scrapy
#linux #ubuntu #cron #планирование #scrapy
Вопрос:
У меня есть задание cron scrape.sh
, которое выглядит следующим образом:
#!/bin/bash
touch rage
cd /etc/myproject/scraper
scrapy crawl foosite --set FEED_URI=../feeds/foosite.xml --set FEED_FORMAT=xml
scrapy crawl barsite --set FEED_URI=../feeds/barsite.xml --set FEED_FORMAT=xml
При его выполнении создается файл rage, и, судя по моему системному журналу, он запускается от имени root, поэтому с разрешениями не должно быть проблем.
May 6 17:35:01 server CRON[10233]: (root) CMD (/etc/myproject/scraper/scrape.sh)
May 6 17:40:01 server CRON[17804]: (root) CMD (/etc/myproject/scraper/scrape.sh)
Когда я запускаю, scrape.sh
он выполняется как ожидалось и помещает foosite.xml
файл в ../feeds
каталог, каталог существует и пуст при запуске заданий cron. Что я могу сделать, чтобы решить эту проблему?
Комментарии:
1. Возможно ли, что
scrapy
команда не найдена в пути поиска? Возможно, это сработает, если вы используете полный путь.
Ответ №1:
- Если бы я собирался угадать проблему, это была проблема среды (например, scrapy отсутствует в path).
- Для отладки убедитесь, что ваше задание cron отправляет стандартный вывод и стандартную ошибку в файл журнала / и / или системный журнал
Комментарии:
1. Странное перенаправление выходных данных cron в журнал ничего не показало (я использовал
amp;>
), но исправление проблемы с path решило ее. Спасибо. 🙂
Ответ №2:
Возможно, команда scrapy не найдена? Задания Cron обычно получают среду оболочки, отличную от интерактивных оболочек, поэтому, возможно, scrapy отсутствует в вашем PATH, и вам следует использовать /some / full /path /to / scrapy.
Если это не поможет, попробуйте перенаправить stdout и stderr в некоторые файлы, чтобы вы могли видеть, какой результат?