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

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

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

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

当我在终端中运行此行并连接到服务器时,它可以工作

bash myscript.sh

然后我创建了这个 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 工具。

任何想法都将不胜感激。


为了清楚起见,以下是最终有效的方法。感谢您为我指明了正确的方向。

连接到服务器,然后输入echo $EC2_HOME并按回车键。

然后输入echo $JAVA_HOME并按回车键。

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

记下每个返回的值。稍后您将使用它们。

创建此 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

你应该可以通过bash yourscriptname.sh在终端中输入以下命令来执行此操作

然后打开你的 croncontab -e并添加以下行:

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

希望这对某人有帮助。

答案1

除了像@ceejayoz 在评论中所说的那样指定命令的完整路径之外,您还需要将 EC2_HOME 设置为指向您的 EC2 工具目录,并且您可能还需要将 $EC2_HOME/bin 添加到您的 PATH 中,以便正确获取命令脚本中引用的文件。

与其在 crontab 中指定一堆环境变量,不如创建一个设置环境并调用命令的 shell 脚本,然后从 crontab 中调用该脚本,这样更简洁、更可靠。

相关内容