无法使用 crontab 运行 git 命令
Unable to run git commands with crontab
我正在设置服务器,我希望服务器中的 git 存储库与原始服务器 (Github) 保持同步。我尝试 运行 一个 cron 作业,它每分钟更新一次服务器中的存储库。这在我的 mac 电脑上是成功的。
定时任务表:
* * * * * bash /home/ubuntu/venv/App/deployer.bash >> /home/ubuntu/venv/App/Logs/deployer.txt 2>&1
这是服务器中失败的部分:
git fetch --all
git reset --hard origin/master
错误:
Fetching origin
Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights and the repository exists.
error: Could not fetch origin
在 crontab 之外一切正常。
例如 :
我可以在没有 sudo 的情况下执行 git 存储库中的所有 git 命令。
使用 sudo 我得到与 cronjob 相同的错误。
更新:
找出导致问题的原因:
2>&1 crontab 表达式写的是标准错误,非常正确。
当我 运行 crontab 之外的命令时,它从不请求身份验证。但是在每次执行的 crontab 上,命令都在请求身份验证
现在谁能解释为什么这会导致这样的错误?
每次在执行 git 命令之前将 ssh 密钥添加到 ssh-agent 有效。这就是我所做的。
我在 cronjob 中添加了以下命令:
eval `ssh-agent -s` && ssh-add ~/.ssh/id_rsa && ssh-add -l
git fetch --all && sleep 2s && git reset --hard origin/master
我正在设置服务器,我希望服务器中的 git 存储库与原始服务器 (Github) 保持同步。我尝试 运行 一个 cron 作业,它每分钟更新一次服务器中的存储库。这在我的 mac 电脑上是成功的。
定时任务表:
* * * * * bash /home/ubuntu/venv/App/deployer.bash >> /home/ubuntu/venv/App/Logs/deployer.txt 2>&1
这是服务器中失败的部分:
git fetch --all
git reset --hard origin/master
错误:
Fetching origin
Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights and the repository exists.
error: Could not fetch origin
在 crontab 之外一切正常。 例如 : 我可以在没有 sudo 的情况下执行 git 存储库中的所有 git 命令。 使用 sudo 我得到与 cronjob 相同的错误。
更新:
找出导致问题的原因:
2>&1 crontab 表达式写的是标准错误,非常正确。 当我 运行 crontab 之外的命令时,它从不请求身份验证。但是在每次执行的 crontab 上,命令都在请求身份验证
现在谁能解释为什么这会导致这样的错误?
每次在执行 git 命令之前将 ssh 密钥添加到 ssh-agent 有效。这就是我所做的。
我在 cronjob 中添加了以下命令:
eval `ssh-agent -s` && ssh-add ~/.ssh/id_rsa && ssh-add -l
git fetch --all && sleep 2s && git reset --hard origin/master