我已经创建了这个 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 中调用该脚本,这样更简洁、更可靠。