Я создал этот сценарий 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 скрипт не находит инструменты API AWS.
Любые идеи были бы очень признательны.
Для ясности вот что в итоге сработало. Спасибо, что указали мне правильное направление.
Подключитесь к серверу и введите echo $EC2_HOME
и нажмите Enter.
Затем введите echo $JAVA_HOME
и нажмите Enter.
Затем введите 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
в терминал
Затем откройте свою cron с помощью contab -e
и добавьте эту строку:
* * * * * (bash ~/your/dir/yourscriptname.sh) #CREATE AWS Snapshot
Надеюсь, это кому-то поможет.
В дополнение к указанию полного пути к команде, как говорит @ceejayoz в комментариях, вам также необходимо установить EC2_HOME так, чтобы он указывал на ваш каталог инструментов EC2, и вам также может потребоваться добавить $ EC2_HOME / bin в свой PATH, чтобы для правильного выбора файлов, на которые есть ссылки в командных сценариях.
Вместо того, чтобы указывать кучу переменных среды в вашем crontab, проще и надежнее создать сценарий оболочки, который устанавливает среду и вызывает вашу команду, а затем вызывает сценарий из вашего crontab.