【发布时间】:2011-05-23 18:48:42
【问题描述】:
我试图创建一个 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 命令本身是正确的。我可以毫无错误地运行它。
【问题讨论】:
-
在 shell 中运行命令本身会发生什么?
-
您有名为
git.log的用户吗? -
@Tom 如果我自己运行命令,它会运行。
-
您需要更新输出以写入日志的绝对路径。波浪号 (~) 是您的主目录的相对路径。我认为这不会解决您的问题,但您应该以
... >> /var/log/git.log结尾 -
因为
git pull会自动运行git merge,这可能会因冲突而失败,并且会使事情处于对于自动化脚本修复而言非常重要的状态,我强烈不建议这样做任何存储库,它甚至有可能发生除一项工作之外的任何事情,从而导致可能被证明不兼容的更新。请改用git fetch,并定期进行手动合并。