2011-10-22 68 views
1

我試圖運行從一個crontab發射的bash腳本瑞克文件發射的bash腳本耙文件:運行通過由一個crontab

我的crontab是這樣的:

* * * * * /bin/bash ~/sites/www/tweeet/get_tweeet.sh 

我bash腳本(get_tweeet.sh)看起來是這樣的:

1 #!/bin/bash 
    2 set -x 
    3 cd /var/www/tweeet/ 
    4 export RAILS_ENV=development 
    5 rake get_tweeet >> /var/www/tweeet/test.log 
    6 echo "$(date): cron job run " >> /var/www/tweeet/test.log 

什麼情況是,6個線輸出到test.log裏,但現在5號線那樣 - 耙不運行。

,但如果我使用的確切路線從crontab中

/bin/bash /var/www/tweeet/get_tweeet.sh 

然後它調用腳本 - 我對這個莫名其妙!

+0

是'rake'在'的crond(8)'的'PATH'?如果不是,請嘗試將目錄添加到你的'/ etc/environment'文件,如果你的系統支持它(並且你的PAM被配置使用它),或者直接把你的'crontab(5)'文件加入'PATH =/sbin:/ usr/sbin目錄:/ bin中:在/ usr/bin中:/路徑/到/耙/ home' – sarnold

+0

你記錄輸出(尤其是標準錯誤)從您的cron作業的地方?這可能會讓你更清楚實際發生的事情。 – Frost

+0

http://www.google.com/search?&q=site%3Astackoverflow.com+rake+crontab – Thilo

回答

1

你的腳本直接執行運行,因爲它有完整的環境中使用。一個cronjob不會,即使它屬於同一個用戶。因此,一種解決方案是從完整的登錄shell中啓動它。在你的crontab:

bash --login -c '/var/www/tweeet/get_tweeet.sh' 

我記得看到一些後這個潛在的有一些細微的副作用,我不記得,但它已經爲我工作。

+0

- 這工作 – toast