2013-03-21 64 views
2

我正在自动执行ec2启动和关闭操作,我写了一个bash脚本,它在我手动运行它时起作用,但是当我将bash添加到由crontab运行时它不执行。我已经为脚本分配了适当的权限。这里是我的脚本无法使用cron运行ec2命令行

#! /bin/bash 
/usr/local/aws/bin/ec2-start-instances --region us-east-1 i-abc12345 

这里是我的crontab

35 13 * * * /bin/bash /home/ubuntu/.script/testshutdown.sh 

请帮我!

+0

您可能会错过ec2命令行工具在cron使用的会话中需要的一些环境变量。在运行ec2命令之前,您可能需要在脚本中尝试定义它们。 – datasage 2013-03-21 13:44:59

回答

2

对于任何错误,您从/var/log/cron获得什么输出?此外,如果您在脚本开始处放置了#!/ bin/bash,那么您不需要告诉cron如何执行该脚本。确保它是可执行的(chmod + x testshutdown.sh)。

您是在编辑/ etc/crontab,运行crontab -e还是其他?系统上不止有一个crontab,在某些情况下,它们的编辑方式会有所不同。

1

我在这里的答案可能是你正在寻找的帮助: https://stackoverflow.com/a/21397517/2083509 段:

AWS_ACCESS_KEY="blah-blah-dingle-smith" # changeme 
AWS_SECRET_KEY="yankee-doodle-shit-no-stank" # changeme 
JAVA_HOME="/usr/lib/jvm/java" 
EC2_HOME="/opt/aws/apitools/ec2" 
EC2_URL="https://us-west-2.ec2.amazonaws.com/" # changeme 
PATH="$PATH:/opt/aws/bin" # is dir contains a symlinks of tool binaries 
export AWS_ACCESS_KEY AWS_SECRET_KEY JAVA_HOME EC2_HOME EC2_URL PATH 

添加上述直接进入您的testshutdown.sh脚本。或者给它自己的脚本并在你的crontab作业之前加载它。例如:* * * * * /home/ubuntu/.script/aws-env.sh; /home/ubuntu/.script/testshutdown.sh或我建议从链接(源a * .conf)中提出的建议使用完全访问管理密钥进行特定任务是不可取的。 ;)

在cron本身设置你的SHELL可能是明智的。将SHELL=/bin/bash替换或添加到您的cron。即使你有适当的屁股,它仍然是一个很好的决定。试着找出你知道为什么命令工作的原因,你可能会开车疯狂。