在aws ebs上创建cron作业以运行python脚本

问题描述 投票:0回答:1

我在aws上有一个Elastic BeanStalk服务器用作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"
amazon-ec2 elastic-beanstalk
1个回答
2
投票

首先,cronjob.config文件描述了两个文件:/etc/cron.d/mycron/usr/local/bin/myscript.sh

第一个文件放在/etc/cron.d目录中,这是你放置cron jobs in Linux的地方之一。在这种情况下,mycron文件是你的cron作业,它包含以下行:

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

指示从星期一到星期五16:05运行myscript.sh(作为root用户)。将文件放入此目录后,cron将自动检查并在指定时间运行作业。您不需要再做任何事情了。

第二个文件/usr/local/bin/myscript.sh是由cron作业运行的文件。

考虑到您可以在哪里找到这些文件的问题 - 您在上面的名称中提供了完整的路径。

使用/etc/cron.dcrontab -l命令无法查看在sudo crontab -l目录中设置的crons,但这并不意味着它们不会运行 - 此目录中的文件是constantly monitored and parsed as cron jobs

如果您认为您的脚本没有被执行,请通过修改您的cron作业进行简单的测试。例如:

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

此作业将打印当前日期和时间(每1分钟)到cron.log中创建的/tmp文件。之后它将尝试执行您的命令。您可以通过检查此日志文件来检查是否执行了cron作业。

然后,如果您的命令无声地失败,您可以将脚本的标准输出和标准错误重定向到某个日志文件,以检查其执行出了什么问题。

© www.soinside.com 2019 - 2024. All rights reserved.