通过 crontab 使用 git

通过 crontab 使用 git

我有以下脚本

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

我想每分钟运行一次我的脚本,所以我编辑 crontab(通过crontab -e)以便从当前用户运行脚本。

*/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。Ubuntu 13.04 x64 具有最新更新。

我应该怎么做才能从 crontab 使用 git?

答案1

当向远程询问有关主服务器中的更改时,Git 无法授权,因为当我生成 ssh 密钥时,我使用密码保护它。

因此,我只需重新生成密钥(无需密码),脚本就可以完美运行。

答案2

使 crontab 任务如下:

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

或者

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

或者,如果您想按照发布的方式执行操作,则需要在该脚本alias末尾添加以下内容:/etc/bash.bashrc

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

然后你可以添加 cron 作业如下:

*/1 * * * * root report-server

相关内容