2

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コマンドの1つのコマンドを呼び出すことが問題であることがわかりました。
このコマンドを呼び出す 1 つの cron ジョブを作成することをテストしましたが、それは ec2-describe-snapshots です
が、機能しません。

お知らせ下さい...

リーキナ

4

2 に答える 2

1

これまでのご協力に感謝します。今、私はそれを捕まえることができます。

問題は、cronがenv変数をロードしないため、cronの実行中にenv変数に使用するものを指定するだけでよいということです。ec2コマンドのテストコードは次のとおりです。

export EC2_PRIVATE_KEY = / root / keys / pk-Q4NR5FGDTSWWK65EDSIDCBTEQWJ6G24V.pem export EC2_CERT = / root / keys / cert-Q4NR5FGDTSWWK65EDSIDCBTEQWJ6G24V.pem export JAVA_HOME = / usr / lib / jvm / java

echo "start ec2-describe-snapshots" >> /var/log/ec2-delete-snapshot.log $ EC2_HOME_BIN / ec2-describe-snapshots >> /var/log/ec2-delete-snapshot.log echo "end it" >> /var/log/ec2-delete-snapshot.log

于 2010-06-10T03:12:52.180 に答える
1

このファイルを処理するプログラムを追加する必要があります。何かのようなもの:

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

cronがプロセスを開始するときに環境変数がロードされていないため、フルパスを使用することが重要です

于 2010-06-08T09:03:24.083 に答える