2016-07-25 4 views
0

スローのcrontabは私がターミナルで次のコマンドを実行したときに、それが正常に動作しますが、私はcrontabの中でこれを実行すると、次のエラーを取得しています、crontabファイル内のコマンドの下にきたエラー

* * * * * cd /home/path/application && RAILS_ENV=development ./bundle exec rake namespacefolder:rake_file 

エラー:

bundler: command not found: rake 
Install missing gem executables with `bundle install` 

誰かお手伝いください。

+0

「bundler」がすでにあなたに与えた言葉よりも、どんな言い回しがあるかもしれませんか? **不足しているgem実行ファイルを 'bundle install' **でインストールしてください。 – mudasobwa

答えて

0

コマンド

-c

を実行するために使用するプログラムを指定し、バンドル

* * * * * /bin/bash -l -c "cd ~/home/path/application && RAILS_ENV=development bundle exec rake namespacefolder:rake_file" 

/binに/ bashをして解決しない場合は、この方法を試してください。 procesの後の最初のオプションでない引数からコマンドを読み込んで実行するオプションを歌い、終了します。残りの引数は$ 0で始まる定位置パラメーターに割り当てられます。

-l

それが直接ログインで呼び出されたかのように、このシェルの行為を行います。シェルがインタラクティブである場合、これは 'exec -l bash'でログインシェルを起動するのと同じです。シェルが対話的でない場合、ログインシェルの起動ファイルが実行されます。 'exec bash -l'または 'exec bash --login'は、現在のシェルをBashログインシェルに置き換えます。ログインシェルの特別な動作については、「Bashスタートアップファイル」を参照してください。

here

+0

ええ、それは動作します..、ありがとうございました:) – sakthivel

+0

こんにちはDeepak、それはどのように動作するか教えていただけますか? – sakthivel

1

このドキュメントを参照してくださいcronはあなたの仕事に、環境変数の最小限のセットを渡します。 hereを参照してください。

ログイン環境を使用し、crontabの最上部に環境パスを設定するために、cron実行のためのbashに-lcオプションを追加します。

PATH=$PATH:/usr/bin:/bin:/usr/local/bin 
* * * * * /bin/bash -lc "cd ~/home/path/application && RAILS_ENV=development bundle exec rake namespacefolder:rake_file" 
関連する問題