Как бы я приступил к отладке задания cron, которое выполняет сценарий, но сценарий, похоже, не завершен?

#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:

  1. Если бы я собирался угадать проблему, это была проблема среды (например, scrapy отсутствует в path).
  2. Для отладки убедитесь, что ваше задание cron отправляет стандартный вывод и стандартную ошибку в файл журнала / и / или системный журнал

Комментарии:

1. Странное перенаправление выходных данных cron в журнал ничего не показало (я использовал amp;> ), но исправление проблемы с path решило ее. Спасибо. 🙂

Ответ №2:

Возможно, команда scrapy не найдена? Задания Cron обычно получают среду оболочки, отличную от интерактивных оболочек, поэтому, возможно, scrapy отсутствует в вашем PATH, и вам следует использовать /some / full /path /to / scrapy.

Если это не поможет, попробуйте перенаправить stdout и stderr в некоторые файлы, чтобы вы могли видеть, какой результат?

http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO-3.html