我在我的localhost中使用git init --bare example.git
创建git repo,用户是git。
我使用root进行git clone,用crontab每分钟运行一次,命令为:
*/1 * * * * git --git-dir=/opt/xxx/.git --work-tree=/opt/xxx pull 1>>/tmp/git.log 2>&1
输出日志是:
权限被拒绝(publickey,键盘交互式)。
致命:无法从远程存储库中读取。
请确保您拥有正确的访问权限和存储库 存在。
然后我尝试:
*/1 * * * * cd /opt/xxx/ && git pull 1>>/tmp/git2.log 2>&1
但输出是一样的。
如果我在命令行中运行,一切正常:
已经是最新的。
我不知道为什么不能用crontab运行?
答案 0 :(得分:4)
基于代理的身份验证要求SSH进程可以访问$ SSH_AUTH_SOCK环境变量,但在通过crontab运行时不会设置该变量。您可能需要考虑切换到无密码密钥对或匿名身份验证方法。
如果这不是一个选项,您可以将$ SSH_AUTH_SOCK环境变量(可能还有$ SSH_AGENT_PID)的内容写入本地文件,您可以从crontab运行脚本中读取该文件并设置变量以便它们可用于SSH。
最后一个选项是删除crontab条目并手动启动作为守护程序运行的shell脚本并定期执行拉动。