我尝试创建一个cronjob,任务是每分钟执行一次git pull
,以使我的生产站点与我的主分支保持同步。
由于权限问题,git拉取需要由系统用户nobody
完成。但是,似乎不允许nobody
帐户运行命令。因此,我必须以root
用户的身份创建任务。
我尝试的crontab条目:
*/1 * * * * su -s /bin/sh nobody -c 'cd ~heilee/www && git pull -q origin master' >> ~/git.log
它不工作,我不知道如何调试它。
有人能帮上忙吗?
UPDATE1:git pull
命令本身是正确的。我可以毫无错误地运行它。
发布于 2010-12-11 16:39:58
解决方案:
*/1 * * * * su -s /bin/sh nobody -c 'cd ~dstrt/www && /usr/local/bin/git pull -q origin master'
发布于 2010-12-11 11:30:19
虽然你首先需要弄清楚如何让更新生效,但你最好从上游使用一个钩子来使其生效。你可以简单地从post-commit
钩子中使用curl,或者如果你使用的是github,那么只需在它们的一侧使用post-receive钩子。
发布于 2012-07-12 02:40:40
*/1 * * * * su -s /bin/sh nobody -c 'cd /home/heilee/src/project && /usr/bin/git pull origin master'
这纠正了一些错误,这些错误阻止了接受的答案在我的系统(Ubuntu >10.04服务器)上工作。关键的变化似乎是在pull
之后而不是之前的-q
。在跟踪/var/log/syslog
文件或尝试运行未更新的生产代码之前,您不会注意到拉不起作用。
https://stackoverflow.com/questions/4414140
复制相似问题