2012-03-18 23 views
5

Crontabで自動的に実行されるRakeスクリプトを作成しました。コマンドラインで入力したときにスクリプトはうまく動作しますが、cron内で正しく実行されません。My Shellスクリプトの起動cronで起動したときにRakeが正しく実行されない

スクリプトは次のようになります。

#!/bin/sh 

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

crontabの設定は次のようになります。実行後

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

、ログファイルは日付だけが、何もない、と私が手にエラーが含まれていますsyslogには次のように表示されます。

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) 

EDIT

@Holger Justのコメントのおかげで、私はthis linkが私に役立つスクリプトを手に入れました。ここで

は、典型的には非常に $PATHを制限している私のスクリプト

#!/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

ここにスクリプトに追加された環境のすべてでも、同様の問題は修正されませんでしたが、単純な/過剰の "source〜/bash_profile"がそれを修正しました。ありがとう。 – David

答えて

4

クロンの更新版です。したがって、スクリプトの先頭に$PATHを設定するか、完全パスを使用することができます。あなたはおそらくあなたの$PATHを適応させる必要がある。もちろん、

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

のようなスクリプトでパスを設定することができます。例えばあなたのrootユーザーのログインシェルのものを使うことができます。あなたはecho $PATHを実行することでそれを得ることができます。

RVMを使用する場合は、cronがデフォルトでrvm(または他のシェル初期化スクリプト)をロードしないため、cronスクリプトに明示的にロードする必要があります。

+0

ありがとう。あなたの入力(このリンクに私を導く)で、私はそれを働かせました、cf.編集した質問 –

関連する問題