2

サーバーにログインした後、サーバー上のコードを更新するために次の手順を使用しています。

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

今、私は次の内容update.shでファイルを作成しました/var/www/

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

そして、5分ごとに実行する次のcrontabエントリがあります。

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

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

cronジョブでもこれを修正する方法。sudo -sそれは何か他のものに関連していますか?

ありがとう

4

2 に答える 2

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" youremail@wherever.com

その後、ジョブが実行されると、エラーが発生した場合はメールで送信されます。少なくとも、何がうまくいかないかがわかります。

于 2012-04-04T12:01:40.790 に答える
1

別のユーザーとして実行する必要がある場合は、そのユーザーのcrontabにインストールしてください。スクリプトでsudoを実行しようとするのではなく。

于 2012-04-04T11:28:25.223 に答える