2012-03-18 12 views
5

aracılığıyla başlatıldığında doğru çalışmaz Crontab ile otomatik olarak çalışması gereken bir Rake betiği yazdım. Komut, komut satırına yazıldığında iyi çalışır ancak doğru olarak cron içinde çalışmaz.Rake başlattığım Shell komut dosyası, cron

script şöyle:

#!/bin/sh 

echo `date` 
cd /home/mick/myapp/current 
rake RAILS_ENV=production mynamespace:myaction 

crontab ayarı şuna benzer:

10 0,6,12,18 * * * /home/mick/work/launch.sh >> /home/mick/work/launch.log 

İdamdan sonra, günlük dosyası sadece tarih ancak başka hiçbir şey ve hata alıyorum syslog şuna benzer:

Mar 18 18:10:01 CRON[21773]: (mick) CMD (/home/mick/work/launch.sh >> /home/mick/work/launch.log) 
Mar 18 18:10:01 CRON[21772]: (CRON) error (grandchild #21773 failed with exit status 127) 
Mar 18 18:10:01 postfix/sendmail[21776]: fatal: open /etc/postfix/main.cf: No such file or directory 
Mar 18 18:10:01 CRON[21772]: (mick) MAIL (mailed 1 byte of output; but got status 0x004b, #012) 

DÜZENLEME:

@Holger Just adlı kullanıcının yorumuna, this link numaralı telefon numarasını kullanarak çalışma yazıyorum. İşte

tipik bir çok $PATH kısıtlı sahiptir senaryoma

#!/usr/bin/env bash # UPDATED TO GET ACCESS TO 'source' 

export PATH=blabla # NOT SURE THIS HELPED AS IT WAS MY FIRST MODIF AND DIDN'T FIX 
source /home/mick/.rvm/environments/default # LOADING RVM TO MAKE THINGS WORK 
echo `date` 
cd /home/mick/myapp/current 
rake RAILS_ENV=production mynamespace:myaction 
+0

Burada betiğe eklenen tüm ortam öğeleri, benzer bir sorunu gideremedi, ancak basit bir/overkill "source ~/.bash_profile" yaptı. – David

cevap

4

Cron güncellenmiş versiyonudur. Bu yüzden, $PATH komut dosyasını veya herhangi bir yol üzerinde tam yollarını kullanabilirsiniz. Eğer $PATH adapte muhtemelen ihtiyaç Tabii

export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin 

gibi komut yolunu ayarlayabilirsiniz. Örneğin. Kök kullanıcının giriş kabuğunu kullanabilirsiniz. Bunu echo $PATH çalıştırarak alabilirsiniz. Ayrıca, RVM'yi kullanırsanız, cron'un varsayılan olarak rvm (veya başka bir kabuk başlatma komut dosyası) yüklemediğinden, cron komut dosyasına yüklemeniz gerektiğini unutmayın.

+0

teşekkürler. Girişinizle (bu bağlantıya beni yönlendiren), çalışıyorum, cf. düzenlenmiş soru –