私は次のシェルスクリプトを持っています
#!/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 status
とgit config -l
もチェックされ、コマンドが正しく機能することを確認しました。 git config -l
リモートオリジンURLを正しく表示します。最新のアップデートを含むUbuntu13.04x64。
Crontabからgitを操作するにはどうすればよいですか?
マスターの変更についてリモートに問い合わせるとき、Gitは認証できません。これは、ssh-keyを生成するときに、パスフレーズで保護するためです。
したがって、パスフレーズなしでキーを再生成するだけで、スクリプトは完全に機能します。
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