在Crontab中运行NodeJS命令和Linux cmd

时间:2017-05-01 12:14:02

标签: javascript node.js linux amazon-web-services amazon-ec2

我正在运行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文件中并指向它?

2 个答案:

答案 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

(给出你的路径)