Crontab работает с ошибками

Я пытаюсь выполнить некоторых пестрых пауков на своем сервере с crontab программно. Я попробовал несколько команд, и у меня наконец есть этот crontab, который не работает, и он не дает мне полезной ошибки также.

#!/bin/bash
PATH=/root/
47 9,22 * * * cd Travel/lastsecond && scrapy crawl tours

Этот crontab не работает и в syslog Я получаю это:

Feb 13 09:47:01 d4bd CRON[18641]: (root) CMD (cd Travel/lastsecond && scrapy crawl tours)
Feb 13 09:47:01 d4bd CRON[18640]: (CRON) info (No MTA installed, discarding output)

В выводе я получаю это:

/bin/sh: 1: scrapy: not found

Я имею пестрый установленный, и команды хорошо работают автономные.

0
задан 15 February 2018 в 11:12

2 ответа

Файл scrapy не может быть найден нигде в PATH (см. Ниже). Чтобы найти, где он находится, используйте следующую команду в вашей интерактивной оболочке:

which scrapy

Он покажет свой абсолютный путь, например, /usr/local/bin/scrapy. Укажите абсолютный путь к crontab:

47 9,22 * * * cd Travel/lastsecond && /usr/local/bin/scrapy crawl tours

Относительно переменной PATH

Переменная PATH используется для поиска программ, когда вы не Точный путь указывается в командной строке или в скрипте. Это определяется настройками профиля и crontabs тоже. Обычно это выглядит так:

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

Пример взят из моего /etc/crontab. Однако значение, которое вы указали в вашем crontab, выглядит необычно…

PATH=/root/

Не пытаетесь ли вы установить здесь рабочий каталог ?!

Относительно Шебанга

]

Шебанг - первая строка многих сценариев. Он указывает, какой интерпретатор должен интерпретировать файл. Это не имеет смысла в crontab, и вы должны удалить его. Crontab - это файл данных для Cron, а не скрипт.

0
ответ дан 15 February 2018 в 11:12

Крон по умолчанию отправляет почту пользователю с выводом команд, которые это выполняет. Но, как это говорит, никакая ЦИНОВКА (Агент Передачи почты) не установлена, таким образом, крон не может отправить почту и отбрасывает вывод команды. Можно перенаправить вывод сами в файл или в пустоту (/dev/null) путем изменения строки крона на:

47 9,22 * * * cd Travel/lastsecond && scrapy crawl tours > outfile 2>&1

или

47 9,22 * * * cd Travel/lastsecond && scrapy crawl tours > /dev/null 2>&1

вторая возможность состоит в том, чтобы установить MTA (sendmail, постфикс или подобный) - и настроить его для обработки местной почты.

Или Вы могли удостовериться, что Ваш сценарий не генерирует вывода.

1
ответ дан 24 September 2019 в 15:59

Другие вопросы по тегам:

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