Railsアプリをホストするために使用するUbuntu 12.04を実行しているサーバーがあります。cronでタスクを実行しています。これは、次のように区切られたいくつかのUNIXコマンドで構成されています&&
。
cd /home/deploy/app/current && RAILS_ENV=production ...
コマンドが最初の で失敗しているため、次のように最後のビットが切り取られていますcd
。
cd: そのようなファイルまたはディレクトリはありません
cd が問題なく動作する deploy ユーザーの環境では。ディレクトリが存在し、それはシンボリック リンクです。
lrwxrwxrwx 1 deploy deploy 42 Mar 4 15:28 /home/deploy/app/current -> /home/deploy/app/releases/20130304152305
シェルがシンボリック リンクに cd する機能が環境の影響を受けるのは奇妙だと思ったので、次の質問に従って、cron の環境変数をファイルに吐き出しました:環境をシミュレートする方法 cron はスクリプトを実行しますと?.
その行を cron ユーザーとして実行しようとすると、失敗します。
$ env - $(cat ~/cron.env) cd /home/deploy/app/current
env: cd: No such file or directory
なぜこれが起こるのですか?cron の環境変数は次のとおりです。
HOME=/home/deploy
LOGNAME=deploy
PATH=/usr/bin:/bin
LANG=en_US.UTF-8
SHELL=/bin/sh
PWD=/home/deploy