1
我有一臺運行Ubuntu 12.04的服務器,我們用它來託管一個Rails應用程序。我上運行的cron任務,它是由一對夫婦的UNIX命令的由&&
分離 - 如:cd到符號鏈接的目錄在cron環境中失敗
cd /home/deploy/app/current && RAILS_ENV=production ...
最後一位被剪斷,但該命令的第一個cd
失敗,與此:
CD:沒有這樣的文件或目錄
在部署用戶的環境,CD作品沒有問題。該目錄存在,它是一個符號鏈接:
lrwxrwxrwx 1 deploy deploy 42 Mar 4 15:28 /home/deploy/app/current -> /home/deploy/app/releases/20130304152305
我覺得很奇怪,對於殼CD符號鏈接的能力會受到環境的影響,所以我吐出的cron環境變量一個文件,根據這個問題:How to simulate the environment cron executes a script with?。
如果我嘗試和執行行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
這對我所看到的有意義。我總是認爲cron會自動在shell中運行命令,但事實證明這不是真的!謝謝 – 2013-03-06 14:49:46