我正在自动执行ec2启动和关闭,我编写了一个bash脚本,当我手动运行它时可以工作,但是当我添加bash来运行crontab时它没有执行。我已为脚本分配了适当的权限。这是我的剧本
#! /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 :(得分:2)
对于任何错误,您从 / var / log / cron 获得了什么输出?此外,如果您在脚本开头放置了#!/ bin / bash,那么您无需告诉cron如何执行脚本。确保它是可执行的( chmod + x testshutdown.sh )。
您是在编辑/ etc / crontab,运行crontab -e还是其他?系统上不只有一个crontab,在某些情况下,它们的编辑方式也不同。
答案 1 :(得分: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)永远不建议使用完全访问管理密钥来执行特定任务。 ;)
将你的SHELL置于cron本身可能是明智之举。将SHELL=/bin/bash
替换或添加到您的cron。即使你有适当的shebang,它仍然是一个很好的决定。你可能会疯狂地试图找出你知道的命令为何工作,不要。