我正在尝试创建一个cronjob,其任务是每分钟做一次 git pull
,以使我的 生产环境 站点与我的主分支保持同步 .
由于权限问题,git pull需要由系统用户 nobody
完成 . 但是,似乎不允许运行命令 nobody
帐户 . 所以我必须创建作为 root
用户的任务 .
我试过的crontab条目:
*/1 * * * * su -s /bin/sh nobody -c 'cd ~heilee/www && git pull -q origin master' >> ~/git.log
它不起作用,我不知道如何调试它 .
有人可以帮忙吗?
UPDATE1: git pull
命令本身是正确的 . 我可以毫无错误地运行它 .
5 回答
解:
虽然你确实需要弄清楚如何让更新在第一时间工作,但你最好还是使用上游的钩子来实现它 . 你可以简单地使用来自
post-commit
钩子的curl来做这件事,或者如果你正在使用github,只需在他们一边使用post-receive钩子 .这纠正了一些错误,这些错误阻止了我的系统(Ubuntu> 10.04服务器)上接受的答案 . 关键变化似乎是在
pull
之后的-q
而不是之前 . 你赢了't notice that your pull isn' t工作,直到你拖尾/var/log/syslog
文件或尝试运行你未更新的 生产环境 代码 .这是我一直在使用和工作
我创建了一个小脚本来处理它 . 然后可以使用by命令crontab
这是
gitpull.sh
:我们必须设置工作目录