在AWS EBS上创建Cron作业以运行python脚本

时间:2018-08-27 21:47:52

标签: amazon-ec2 elastic-beanstalk

我在aws上有一个Elastic BeanStalk服务器,用作JSON服务器。数据文件需要每天更新。 我有一个Python脚本,我想在每个工作日运行以更新数据文件。我创建了.ebextensions文件夹,并在下面创建了cronjob.config。我想每天运行update_data_files.py。 我从https://aws.amazon.com/premiumsupport/knowledge-center/cron-job-elastic-beanstalk/

使用了cronjob.config模板

问题: 如何以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 :(得分: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目录中设置的分支,但这并不意味着它们不会运行-文件中的该目录为constantly monitored and parsed as cron jobs

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

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

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

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