web-dev-qa-db-ja.com

crontabを介したgitの操作

私は次のシェルスクリプトを持っています

#!/bin/bash
REPODIR=$HOME/work/repository/
cd $REPODIR
var=`git fetch --dry-run 2>&1`
echo $var > $HOME/error.txt

スクリプトを毎分実行したいので、現在のユーザーからスクリプトを実行するために(crontab -eを介して)crontabを編集します。

*/1 * * * * /home/nameoftheuser/Documents/report-server.sh

手動実行から-スクリプトは正しく機能します。しかし、crontabからスクリプトを実行する(error.txt内):

fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists.

スクリプトファイルには775の権限があります。 git statusgit config -lもチェックされ、コマンドが正しく機能することを確認しました。 git config -lリモートオリジンURLを正しく表示します。最新のアップデートを含むUbuntu13.04x64。

Crontabからgitを操作するにはどうすればよいですか?

2
mef_

マスターの変更についてリモートに問い合わせるとき、Gitは認証できません。これは、ssh-keyを生成するときに、パスフレーズで保護するためです。

したがって、パスフレーズなしでキーを再生成するだけで、スクリプトは完全に機能します。

2
mef_

crontabジョブを次のようにします。

*/1 * * * * nameoftheuser /home/nameoftheuser/Documents/./report-server.sh

または

*/1 * * * * nameoftheuser sh /home/nameoftheuser/Documents/report-server.sh

または、投稿したとおりに実行する場合は、/etc/bash.bashrcの最後にaliasを次のようにスクリプトに追加する必要があります。

alias report-server='/home/nameoftheuser/Documents/./report-server.sh'

次に、cronジョブを次のように追加できます。

*/1 * * * * root report-server
0
mirkobrankovic