Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git pull请求不能与cronjob一起工作_Git_Shell_Cron - Fatal编程技术网

Git pull请求不能与cronjob一起工作

Git pull请求不能与cronjob一起工作,git,shell,cron,Git,Shell,Cron,我对编码非常陌生,有人能帮助我如何使用cron作业成功地执行git pull 我确实编写了一个具有git pull的Shell脚本,如下所示,当我在终端上运行Shell脚本时,它确实可以工作 #!/bin/bash cd /Users/xplain/testing/UI git pull cd testing python -m unittest XplainTestRunner.XplainTestRunner 但我的cron工作不起作用。我的cron工作如下 11 16 * * * /U

我对编码非常陌生,有人能帮助我如何使用cron作业成功地执行
git pull

我确实编写了一个具有git pull的Shell脚本,如下所示,当我在终端上运行Shell脚本时,它确实可以工作

#!/bin/bash

cd /Users/xplain/testing/UI
git pull
cd testing
python -m unittest XplainTestRunner.XplainTestRunner
但我的cron工作不起作用。我的cron工作如下

11 16 * * * /Users/xplain/automation.sh >> /Users/xplain/script_output.log 2>&1

有人能帮我一下吗?

您是如何在您的机器上以用户身份手动运行
git
?您是否有连接到SSH密钥的密码短语?如果是这样,当cron作业运行时,它将提示输入密码短语,但它不是交互式任务,因此将失败

相关的,我相信您使用Mac OS X是因为脚本中的
/Users/
文件路径:

/Users/xplain/
实际上,您可能已经将我们的SSH密钥密码短语保存在您的用户密钥链中。据我所知,除非您实际登录,否则无法访问。如果您在用户下运行cron作业,我不相信该任务将能够访问用户密钥链,因此您的脚本将再次失败

这说明了如何在Mac OS X中使用
launchd
而不是
cron
来识别钥匙链设置。所以这可能是一个值得探索的问题

另一个想法是尝试为
git
python
添加完整路径:

#!/bin/bash

cd /Users/xplain/testing/UI
/usr/bin/git pull
cd testing
/usr/bin/python -m unittest XplainTestRunner.XplainTestRunner
我使用的是
/usr/bin/git
/usr/bin/python
,因为它们安装在标准的MacOSX上。但您可以使用
确定完整路径,如下所示:

which git
对我来说,它返回:
/usr/bin/git

which python

对我来说,它返回:
/usr/bin/python

是您的
自动化.sh
脚本标记为可执行文件吗?@GregHewgill是的!“我确实编写了一个具有git pull的Shell脚本,如下所示,当我在终端上运行Shell脚本时,它确实可以运行。”好吧,可以将一个不可执行的Shell脚本作为参数传递给
sh
,这里没有显示。@GregHewgill检查我的答案。根据原始海报的用户路径
/user/xplain/
,这似乎是在Mac OS X上。因此,如果需要钥匙链访问,则除非用户使用
launchd
,否则无法使用。但运行
git
python
也可能需要完整的二进制路径。