我看了很多答案关于这个主题,但这里有些不对劲,让我解释一下。我创建了这个脚本,让我cron
更清洁 :)
#!/bin/bash
cd /home/valter.silva/Development/git/valter/
/usr/bin/git add -A
/usr/bin/git commit -am "update `date`"
/usr/bin/git push
然后将其添加到我的 cron 中valter.silva's cron
,不是我的root cron
:
00 * * * * /home/valter.silva/Development/git/valter/scripts/git/sync.sh
重启我的 cron
sudo service cron restart
cron stop/waiting
cron start/running, process 6047
然后..什么都没发生..
但是如果我在命令行中执行我的脚本,一切都会正常工作。我知道,有时如果你没有将整个路径放在 cron 脚本中,它将无法正常工作。我应该使用我的 cron 来执行此操作,而不是 root 的 cron。
那么这里出了什么问题?有什么想法吗?谢谢!
更新
我按照 Terdon 的建议记录了操作,但看起来一切都正常,但过程却不是push
这样。为什么?
[master ad5d001] update Fri Aug 9 11:00:01 BRT 2013
9 files changed, 1224 insertions(+), 364 deletions(-)
create mode 100644 scripts/centreon/4.answers~
create mode 100644 scripts/centreon/6.importing database
create mode 100644 scripts/centreon/6.importing database~
create mode 100755 scripts/centreon/7.upgrade.sh
create mode 100755 scripts/centreon/7.upgrade.sh~
create mode 100644 scripts/centreon/8.answers
create mode 100644 scripts/centreon/8.answers~
# On branch master
# Your branch is ahead of 'origin/master' by 1 commit.
#
nothing to commit (working directory clean)
# On branch master
# Your branch is ahead of 'origin/master' by 1 commit.
#
nothing to commit (working directory clean)
# On branch master
# Your branch is ahead of 'origin/master' by 1 commit.
#
nothing to commit (working directory clean)
# On branch master
# Your branch is ahead of 'origin/master' by 1 commit.
#
nothing to commit (working directory clean)
答案1
另外,我简化了链接,这样对于那些寻找答案的人来说更容易阅读huti 的博客文章。
因此,对于您的推动sync.sh
,我想补充-u origin master
一点:
#!/bin/bash
cd /home/valter/git-project/
/usr/bin/git add -A
/usr/bin/git commit -am "Daily update"
/usr/bin/git push -u origin master
确保您的脚本可以通过 bash 执行:
sudo chmod 765 ~/sync.sh
然后您可以添加一行到/etc/crontab
:
sudo nano /etc/crontab # To edit the file
01 18 * * * root /home/valter/sync.sh
确保重新启动以使 cron 任务生效,现在您的脚本将每天 18:01 运行。如果没有修改,则不会推送任何内容。
答案2
我不是 git 大师,但我在本地 git test repo 上做了一些 git 测试。当我运行 git push 时,输出如下:
fatal: No configured push destination.
Either specify the URL from the command-line or configure a remote repository using
git remote add <name> <url>
and then push using the remote name
git push <name>
问:您是否使用命令配置了远程存储库git remote add
?如果是,请尝试使用远程存储库名称运行 git push。如果没有,请配置一个,或者在命令行上使用带有远程存储库 URL 的 git push ( git push git://host.xz[:port]/path/to/repo.git/
)。
答案3
为什么你会期望发生某些事情?你已经被告知cron
每小时整点运行你的脚本。如果你在 13:02 修改了 crontab,那么直到 14:00 才会发生任何事情。
尝试等待一段时间,直到时间到了XX:00
,你的脚本应该会运行。哦,不需要重新启动cron
,它会读取新的 crontab 并在下次运行时运行它。
如果您等待的时间足够长并且脚本仍然没有运行,请尝试重定向错误输出以检查是否发生了任何事情:
00 * * * * /home/valter.silva/Development/git/valter/scripts/git/sync.sh 2> /home/valter.silva/error.txt
还可以尝试设置一个虚拟的 cron 作业来查看是否有效:
00 * * * * date > /home/valter.silva/date.txt