Mac-Osx

SVN 命令在 shell 中有效,但在 cron 中無效。為什麼不?

  • April 19, 2012

我使用 cron 每晚在一個文件目錄上執行“svn up”,當其他人正在處理這些文件時,我需要在本地保持最新。這曾經工作正常,很簡單:

/usr/bin/svn up /path/to/目錄

但是,自從我前幾天更新到 OS X Lion 後,上面的命令在 shell(bash)中執行良好,但是當它從 cron 執行時,我得到了

身份驗證領域:https://my-server.com:443 my-server.com Subversion Repository “my.username”的密碼:身份驗證領域:https://my-server.com:443 my-server .com Subversion 儲存庫使用者名:svn:“https://my-server.com/path/to/directory”的選項:授權失敗:無法對伺服器進行身份驗證:拒絕基本質詢(https://my-server.com )

我拼命嘗試將*–config-dir*添加到命令中,但沒有效果。auth憑據似乎很好,並且無論如何它們都可以在 bash 中使用。我知道足夠危險,但我在這裡的工具集已經結束了。

有人可以指出我正確的方向嗎?

svn 正在尋找您保存在 /home/username/.subversion/auth 中的身份驗證資訊。但正如邁克所提到的,環境在 cron 和 $ HOME is probably different. Try setting $ 執行 ‘svn up’ 之前的 HOME。

在 /etc/crontab 中:

0 0 * * * username export HOME=/home/username; /usr/bin/svn up /path/to/update

這可能是因為同一個 env 沒有像在標準 shell 中那樣載入 cron。你可以

  1. source .bashrc 或有一個為你做這一切的腳本
  2. 使用完全限定的應用程序名稱而不是您可以使用的簡單命令,因為 /usr/bin 在 $PATH 上

引用自:https://serverfault.com/questions/293835