我有一个cron作业设置来运行一个bash脚本,每晚都推送给Git。
cron作业是以root用户身份设置的,我已经通过以下方式设置了我的git凭据:git config credential.helper store
:Git push: username, password, how to avoid?(第二个回答)
bash脚本的代码非常简单
#!/bin/bash
# Nightly push to Bitbucket
# Set some variables
DAY=$(date +%F);
# Make sure we run as root
if [ "$(whoami)" != "root" ]; then
echo "Only root can do this.";
exit 1;
else
# Make sure we are in the right directory
cd /hosting;
# Now add any changes
git add .;
# Now commit
git commit -m "$DAY Nightly";
git push all;
fi;
只要我登录服务器并以root身份运行它,就可以在没有打嗝的情况下运行。
但是,它不会在指定时间运行。
Crontab -e设置为:30 3 * * * back-to-git >/dev/null 2>&1
我该怎么做才能让它发挥作用?
答案 0 :(得分:3)
首先,最好在cron选项卡中包含脚本的完整路径。
30 3 * * * /opt/btg/back-to-git >/dev/null 2>&1
将/opt/btg/back-to-git
替换为脚本的绝对路径。
然后尝试不丢弃我包含错误的输出:
30 3 * * * /opt/btg/back-to-git &>/home/your_user/btg.log
这样,您可以在cron处理脚本时检测错误。
您的上一条评论表明bitbucket可能存在身份验证问题。为了确保你以正确的方式推进,我建议总是在脚本中写出git的完整目标。所以尝试使用
git push --all origin
代替git push all;
请在推送到bitbucket时检查您的git设置以使用ssh
而不是https
。
您还可以在/root/.ssh/config
Host bitbucket
HostName bitbucket.org
User YOUR_USERNAME
IdentityFile /root/.ssh/id_rsa
IdentitiesOnly yes