我正在运行EC2 AWS实例,我有一系列运行良好但不会在crontab中执行的命令和脚本。以下是Crontab的内容:
15 03 * * * pythonscript1.py
45 03 * * * pythonscript2.py
00 05 * * * gsjson 1z5OlqsyU5N2ze1JYHJssfe1LpKNvsr4j8TDGnvyuaDZ gsheet.json
05 05 * * * s3cmd put gsheet.json -P -f s3://mybucket772
我是否需要EC2中的python程序路径?使用NodeJS将gsjson安装为NPM包,S3cmd是我安装的命令行工具。
https://s1.postimg.org/nu4zfb22n/ec2-filetree.jpg
我假设我可能是cron中的程序路径,但我不确定我需要什么命令来获取它。或者也许我应该将最后两个命令包装在.js文件中并指向它?
答案 0 :(得分:0)
如果不进一步挖掘你的设置,它应该在使用绝对路径时起作用,即:
15 03 * * * /home/ec2-user/pythonscript1.py
答案 1 :(得分:0)
花了整整一个银行假期与此搏斗。这是解决方案,现在看起来很容易,但是当你摔跤的时候不是这样:
我使用命令EDITOR=nano crontab -e
编辑了ec2-user cron,同时以ec2-user身份登录。创建我的cron作业。
我遇到的主要问题是我的crontab顶部没有以下内容
PATH=/bin:/usr/local/bin
因为它们指向gsjson和s3cmd的位置。
然而,Python脚本仍然无法工作,因为这些脚本的路径是usr / bin。所以我们需要Python和脚本的绝对路径。以下是最终的cron内容,即工作解决方案。感谢其他人对此问题的意见。
确保脚本具有0755权限。
PATH=/bin:/usr/local/bin
15 03 * * * /usr/bin/python /home/ec2-user/pythonscript1.py
45 03 * * * /usr/bin/python /home/ec2-user/pythonscript2.py
00 05 * * * gsjson 1z5OlqsyU5N2ze1JYHJssfe1LpKNvsr4j8TDGnvyuaDZ gsheet.json
05 05 * * * s3cmd put gsheet.json -P -f s3://mybucket772
配置时还有一些其他有用的命令:
cat /var/spool/mail/ec2-user
使您可以在CLI中查看错误电子邮件
crontab -l
(显示您的crontab文件。)
crontab -e
(编辑你的crontab文件,如果它还不存在则创建一个)
sudo service crond status
(给出当前状态)
which python
(给出你的路径)