Создайте задание cron в aws ebs для запуска скрипта на python - PullRequest
0 голосов
/ 28 августа 2018

У меня есть сервер Elastic BeanStalk на aws, который используется как сервер JSON. Файлы данных должны обновляться ежедневно. У меня есть скрипт на python, который я хочу запускать каждый будний день для обновления файлов данных. Я создал папку .ebextensions и создал cronjob.config ниже. Я хочу запускать update_data_files.py ежедневно. Я использовал шаблон для cronjob.config из: https://aws.amazon.com/premiumsupport/knowledge-center/cron-job-elastic-beanstalk/

Вопрос: Как мне запустить этот скрипт как cronjob? какой путь к загруженной папке в ebs для запуска скрипта python?

python3 update_data_files.py

..... cronjob.config .....

files:
    "/etc/cron.d/mycron":
        mode: "000644"
        owner: root
        group: root
        content: |
            5 16 * * 1-5 root /usr/local/bin/myscript.sh
    "/usr/local/bin/myscript.sh":
        mode: "000755"
        owner: root
        group: root
        content: |
            #!/bin/bash
            date > /tmp/date
            # Your actual script content

            python3 update_data_files.py

            exit 0
commands:
    remove_old_cron:
        command: "rm -f /etc/cron.d/*.bak"

1 Ответ

0 голосов
/ 05 сентября 2018

Прежде всего, файл cronjob.config описывает два файла: /etc/cron.d/mycron и /usr/local/bin/myscript.sh.

Первый файл помещается в каталог /etc/cron.d, который является одним из мест, где вы размещаете задания cron в Linux . mycron В данном случае файл является вашим заданием cron и содержит строку:

5 16 * * 1-5 root /usr/local/bin/myscript.sh

, который инструктирует запускать myscript.sh в 16:05 с понедельника по пятницу (как пользователь root). После размещения файла в этом каталоге cron автоматически проверит его и запустит задания в указанное время. Вам не нужно больше ничего делать.

Второй файл, /usr/local/bin/myscript.sh, - это файл, запускаемый заданием cron.

Учитывая вопрос, где вы можете найти эти файлы - вы указали полный путь к ним в их именах выше.

Кроны, которые были установлены в каталоге /etc/cron.d, нельзя просмотреть с помощью команд crontab -l или sudo crontab -l, но это не означает, что они не будут работать - файлы в этом каталоге постоянно контролируется и обрабатывается как cron-задания .

Если вы считаете, что ваш скрипт не выполняется, сделайте простой тест, изменив задание cron. Например ::

* * * * * root echo $(date) >> /tmp/cron.log; /usr/local/bin/myscript.sh

Это задание будет печатать текущую дату и время (каждую минуту) в файл cron.log, созданный в /tmp. После этого он попытается выполнить вашу команду. Вы можете проверить, выполняются ли задания cron вообще, проверив этот файл журнала.

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

...