2012-04-04 21 views
2

私は、サーバーにログインした後、サーバー上のコードを更新するには、次の手順を使用しています:crontabでsvnを使ってコードを更新するには?

sudo -s 
<wrote password here> 
cd /var/www/staging 
rm -r app.old 
mv app app.old 
svn checkout https://example.com/projectname/trunk/app app 

は今、私は、次の内容

cd /var/www/staging 
rm -r app.old 
mv app app.old 
svn checkout https://example.com/projectname/trunk/app app 

/var/www/update.shファイルを作成し、私は後に実行するcrontabのエントリを次のようしています5分ごと:

*/5 * * * * /var/www/update.sh 

問題: cronジョブは機能していますが、appフォルダのみを削除し、ではなく、をsvnリポジトリからチェックアウトしています。しかし、bash /var/www/update.shを手動で実行すると、sudo -sの後で正常に動作します。

これをcronジョブでも解決する方法。それはsudo -sまたは他の何かに関連していますか?あなたが別のユーザーとして実行する必要がある場合は、ユーザーがのcrontabというそれをインストール

おかげ

+0

cronスクリプトが実行されているユーザーが何であれ、ユーザーはSVNからチェックアウトする権限を持っていますか? –

+0

'sudo -s'を実行した後、' bash/var/www/update.sh'を手動で実行するとうまくいきます。 **しかし** cronジョブがこのスクリプト(update.sh)を実行するとき、svnからコードをチェックアウトしていません。 – Awan

+0

それほど私は理解しています。以下を示してください:(1)cronから実行しているジョブはどのユーザーか(rootか他のユーザーか)。 (2)そのユーザーはsvnからチェックアウトする権限を持っていますか? –

答えて

5

ジョブがcronからrootとして実行されており、rootユーザーにチェックアウト権限がないことが問題であると思われます。

まず、私はあなたがSVNで使用するユーザー名/パスワードの詳細を含むことを示唆している - あなたのスクリプト内:

svn checkout --username USER --password PASS ttps://example.com/projectname/trunk/app app 

次に、これにあなたのcrontabに行を変更します。

*/5 * * * * /var/www/update.sh 2>&1| mail -s "Cron job execution" [email protected] 

その後、ジョブが実行されると、エラーが電子メールで送信されます。少なくともあなたは何がうまくいかないかを見るでしょう。

+0

+1 crontabで非常に便利な電子メールオプション。ありがとう。今私は誤りを把握させてください。 – Awan

+0

それは今働いています。ありがとう – Awan

+0

複数のメールアドレスにシェルスクリプトの出力を送ることはできますか?ありがとう – Awan

1

。スクリプトでsudoを試みるよりもむしろ。

+0

同じ1人のユーザーとして実行する必要があります。手動でスクリプトを実行するとうまくいきますが、cronジョブを実行しても機能しません。 – Awan

関連する問題