我对编码很陌生,有人可以帮助我如何使用cron job成功执行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
有人可以帮帮我吗?
答案 0 :(得分:0)
如何在计算机上手动运行git
?您是否有连接SSH密钥的密码?如果是这样,当cron作业运行时,它将提示输入密码,但它不是交互式任务,因此它将失败。
相关,我相信您使用的是Mac OS X,因为脚本中有/Users/
文件路径:
/Users/xplain/
您实际上可能已将SSH密钥密码保存在用户密钥链中。据我所知,除非您实际登录,否则无法访问。如果您在用户下运行cron作业,我不相信该任务将再次访问用户密钥链,您的脚本将失败。
此question & answer thread说明了如何在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
,因为这是安装在标准Mac OS X上的地方。但您可以使用which
确定完整路径,如下所示:
which git
对我来说,回复:/usr/bin/git
which python
对我来说,回复:/usr/bin/python