Каталог: каталог - PullRequest
       9

Каталог: каталог

0 голосов
/ 02 июля 2018

Я настроил задание cron для запуска скрипта Python для очистки некоторых веб-страниц.

/ и т.д. / кронтаб

    GNU nano 2.3.1                                  File: crontab

    SHELL=/bin/bash
    PATH=/sbin:/bin:/usr/sbin:/usr/bin
    MAILTO=my_email_address@domain.com

    # For details see man 4 crontabs

    # Example of job definition:
    # .---------------- minute (0 - 59)
    # |  .------------- hour (0 - 23)
    # |  |  .---------- day of month (1 - 31)
    # |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
    # |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
    # |  |  |  |  |
    # *  *  *  *  * user-name  command to be executed

    */2 * * * * root /usr/bin scrapy crawl mycrawler

Однако, электронные письма сообщают мне, что ...

/bin/bash: /usr/bin: Is a directory

Когда я вручную запускаю сценарий, он передает данные в мою базу данных, но когда задание cron выполняет сценарий, ничего ...

На что намекает сообщение /bin/bash: /usr/bin: Is a directory?!

Ответы [ 2 ]

0 голосов
/ 02 июля 2018

Как уже говорилось в комментариях, самая первоначальная ошибка заключается в том, что запись /usr/bin размещается там, где должен быть исполняемый файл:

*/2 * * * * root /usr/bin scrapy crawl mycrawler
                 ^^^^^^^^
                 command

После того как установлено значение scapy, окончательная проблема заключается в том, что scrapy находится в /usr/local/bin, а не в вашем PATH. Чтобы изменить это:

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

И тогда вы сможете просто сделать:

 */2 * * * * root cd <project dir> && scrapy crawl mycrawler
0 голосов
/ 02 июля 2018
/usr/bin

Это довольно стандартный каталог в Unix-подобных операционных системах, который содержит большинство исполняемых файлов.

т.е. вы пытаетесь заставить cron выполнить "scrapy crawl mycrawler" с исполняемым файлом, который является каталогом.

Обычно вам необходимо выполнить скрипт bash (при условии, что двоичный файл bash находится в каталоге / usr / bin):

*/2 * * * * root /usr/bin/bash scrapy.sh

Или команда python (опять-таки, предполагая, что двоичный файл python находится в каталоге / usr / bin)

*/2 * * * * root /usr/bin/python scrapy.py

ИЛИ вы можете добавить абсолютный путь к своей переменной PATH:

*/2 * * * * root scrapy crawl mycrawler
...