从Cron执行时,AWS API工具“未find命令”

我创build了这个bash脚本来生成我的EBS卷的快照

#! /usr/bin/bash ec2-create-snapshot -d "My Snapshot" vol-XXXXXXX -O <MyKey> -W <MyOtherKey> 

当我在连接到服务器时在terminal中运行这条线时,它就起作用了

 bash myscript.sh 

然后我创build了这个crontab

 PATH=/bin:/home/usr/bin/bash:/usr/bin/bash 0 * * * * (bash ~/../bash/myscript.sh) #ALSO TRIED THESE LINES #0 * * * * ~/../bash/myscript.sh #0 * * * * (/usr/bin/bash ~/../bash/myscript.sh) 

我在电子邮件中收到这条消息

 /home/ec2-user/../bash/myscript.sh: line 4: ec2-create-snapshot: command not found 

我没有关于如何使这项工作的想法。 问题似乎是从crontab执行时,脚本找不到AWS API工具。

任何想法将非常感激。


为了清楚起见,这里是结束了工作。 谢谢你指出我正确的方向。

连接到服务器,然后inputecho $EC2_HOME并回车。

然后inputecho $JAVA_HOME并回车。

然后inputsudo find / -name "ec2-create-snapshot" (这个可能会返回多个值)

记下每个返回的值。 你会在一分钟内使用它们。

创build这个bash脚本:

 #! /usr/bin/bash export EC2_HOME=/your/ec2_home/path export JAVA_HOME=/your/java_home/path # Create an AWS Snapshot /path/to/your/ec2-create-snapshot -d "Your Snapshot Description" vol-yourvolid -O YOURPUBLICKEY -W YOURPRIVATEKEY 

您应该可以通过在terminal中inputbash yourscriptname.sh来执行此操作

然后用contab -e打开你的cron并添加这行:

 * * * * * (bash ~/your/dir/yourscriptname.sh) #CREATE AWS Snapshot 

希望这有助于某人。

除了在注释中指定命令的完整path外,还需要将EC2_HOME设置为指向EC2工具目录,还可能需要将$ EC2_HOME / bin添加到PATH中在命令脚本中引用的文件被正确拾取。

而不是在crontab中指定一堆环境variables,创build一个设置环境并调用命令的shell脚本,然后从你的crontab调用脚本,会更加整洁可靠。