2

我正在自动化 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

请帮帮我!!!

4

2 回答 2

2

关于任何错误,您从/var/log/cron得到什么输出?此外,如果您将 #!/bin/bash 放在脚本开头,则无需告诉 cron 如何执行脚本。确保它是可执行的(chmod +x testshutdown.sh)。

您是在编辑 /etc/crontab、运行 crontab -e 还是其他方式?系统上不止一个 crontab,而且在某些情况下,它们的编辑方式不同,需要的值的数量也不同。

于 2013-03-21T19:30:12.003 回答
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或者我建议从链接中执行的操作(来源 *.conf) 永远不建议对特定任务使用完全访问权限的管理员密钥。;)

将您的 SHELL 设置在 cron 本身中可能是明智的。替换或添加SHELL=/bin/bash到您的 cron。即使你有适当的shebang,它仍然是一个不错的决定。你可能会让自己发疯,试图找出为什么你知道的命令有效,但不要。

于 2014-01-28T07:19:24.350 回答