2010-06-08 152 views
2

我希望讓cron執行delete_snapshot.bash,但是當我嘗試創建cron時,如下所示:
*/1 * * * * /var/www/mango_gis/delete_snapshot.bash>/dev/null
它根本沒有執行我的腳本,因爲當我沒有看到它刪除亞馬遜雲中的快照,並且我的腳本已經用bash測試過,它工作正常。Cron作業執行backup.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-describe-snapshots,
但它不起作用。

請指教...

Leakhina

+0

你怎麼k現在它「根本沒有執行腳本?」你丟棄stdout兩次 - 一次在你的crontab中,一次在腳本本身 - 也許腳本*正在執行,但其他一些錯誤被丟棄或丟失。 你的'crond'日誌說什麼? 'crond'錯誤在哪裏去?另一個瑣碎的cronjob是否可以運行(例如'*/1 * * * * logger -p daemon.err - 「我是一個cronjob」')? – pilcrow 2010-06-09 06:53:02

+0

我知道它沒有執行腳本,因爲我沒有刪除我想要從亞馬遜雲計算中刪除的快照,所以它不起作用。任何方式如何查看cron日誌? – leejava 2010-06-09 07:26:39

+0

你可以在你的syslog.conf中使用「cron」來定義日誌文件 – Thariama 2010-06-09 08:42:15

回答

1

你應該增加與要處理此文件的程序;是這樣的:

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

使用的完整路徑是很重要的,因爲你沒有加載環境變量時的cron啓動過程

+0

我已經將它改成這樣了 */1 * * * */usr/bin/bash /var/www/mango_gis/delete_snapshot.bash>/dev/null 但它沒有工作。 – leejava 2010-06-09 04:00:23

+0

你可以在命令行中使用「哪個bash」來找出你的bash程序的位置。然後把這個絕對路徑放到你的cron作業中。(程序的位置因系統而異,例如我得到了/ bin/bash下的bash程序(從編輯它看起來像你的bash的絕對路徑是一樣的)) – Thariama 2010-06-09 06:42:34

+0

yesh,我也這樣做,但是它仍然不起作用 – leejava 2010-06-09 07:37:37

1

感謝您的幫助迄今。 現在我可以抓住它。

問題是,cron沒有加載env變量,所以我們只需要指定我們在cron執行時使用env變量。 這裏是EC2命令,如下我的測試代碼:

出口EC2_PRIVATE_KEY = /根/鍵/ PK-Q4NR5FGDTSWWK65EDSIDCBTEQWJ6G24V.pem 出口EC2_CERT = /根/鍵/ CERT-Q4NR5FGDTSWWK65EDSIDCBTEQWJ6G24V.pem 出口JAVA_HOME =的/ usr/LIB/JVM/JAVA-6-太陽/ 出口EC2_HOME_BIN =的/ usr/bin中

回聲 「啓動EC2-描述快照」 >> /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

+0

這正是我昨天在其他評論中談論的到我的回答(你需要推「show x more comments」才能看到他們) – Thariama 2010-06-10 06:20:50