我在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"
答案 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.d
或crontab -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作业。
然后,如果您的命令无提示失败,则可以将脚本的标准输出和标准错误重定向到某个日志文件,以检查其执行中出了什么问题。