Задание Cron выполнить backup.bash - PullRequest
2 голосов
/ 08 июня 2010

Я хочу позволить cron выполнять delete_snapshot.bash, но когда я пытаюсь создать cron, как показано ниже:
* / 1 * * * * /var/www/mango_gis/delete_snapshot.bash> / dev / null
Он вообще не выполнял мой сценарий, потому что, когда я не видел его, удалите снимок в облаке amazon, и мой сценарий уже протестирован с bash, он работает нормально.

Вот мой скрипт, как показано ниже:

#!/bin/bash

get()
{
    local pos=$1
    shift
    eval 'echo ${'$pos'}';
}

length(){ echo $#; }

find_snapshots()
{
    echo $(ec2-describe-snapshots | xargs -n1 basename);
}

snapshots=$(find_snapshots)
len=$(length $snapshots)
row_count=$(($len/6))

if(($row_count > 6)); then
    delete_count=$(($row_count-6))
    for (( i=1; i<=$delete_count; i++ )); do
            ec2-delete-snapshot $(echo $(get $((2+$((6*$(($i-1)))))) $snapshots)) > /dev/null
    done
fi


Выше я обнаружил, что проблема в том, что я вызываю одну команду команды EC2.
Я проверил, чтобы создать одно задание cron для вызова этой команды - ec2-description-snapshots,
, но оно не работает.

Пожалуйста, сообщите ...

Leakhina

Ответы [ 2 ]

1 голос
/ 10 июня 2010

спасибо за вашу помощь. Теперь я могу его поймать.

проблема в том, что cron не загружает переменную env, поэтому нам просто нужно указать, что мы используем для переменной env при выполнении cron. Вот мой тестовый код для команды ec2, как показано ниже:

export EC2_PRIVATE_KEY = / root / keys / pk-Q4NR5FGDTSWWK65EDSIDCBTEQWJ6G24V.pem export EC2_CERT = / root / keys / cert-Q4NR5FGDTSWWK65EDSIDCBTEQWJ6G24V.pem экспорт JAVA_HOME = / usr / lib / jvm / java-6-sun / export EC2_HOME_BIN = / usr / bin

echo "запускать ec2-description-snapshots" >> /var/log/ec2-delete-snapshot.log $ EC2_HOME_BIN / ec2-description-snapshots >> /var/log/ec2-delete-snapshot.log эхо "конец" >> /var/log/ec2-delete-snapshot.log

1 голос
/ 08 июня 2010

вы должны добавить программу, с которой вы хотите обработать этот файл; что-то вроде:

*/1 * * * * /bin/bash  /var/www/mango_gis/delete_snapshot.bash > /dev/null

важно использовать полный путь, потому что у вас нет загруженных переменных окружения, когда cron запускает процесс

...