【问题标题】:git "compressing objects" crash - Ubuntugit“压缩对象”崩溃 - Ubuntu
【发布时间】:2015-11-25 18:35:38
【问题描述】:

我有点奇怪,这给我带来了一些问题。 我有一个运行 git 的 cron 作业,基本上“备份”了一堆开发网站。

我还将这个 cron 作业放在我们运行的另外两台服务器上,因为这两台服务器都有直接编辑的特定网站,因此没有自己的备份。

开发服务器和第一个实时服务器都可以正常运行此作业(自定义 sh 文件),但最后一个会导致整个服务器崩溃,并在几秒钟内关闭大约 10 个不同的网站。由于每天都在运行,这确实不是一件好事。

这是运行的 .sh 文件:

/root/git.sh

#!/bin/sh
git=$(which git)

dt=$(date +"%d-%m-%y")

eval `/usr/bin/ssh-agent -s`
/usr/bin/ssh-add /root/git

shopt -s nullglob
shopt -s dotglob

cd /home/
for d1 in */ ; do
        cd /home/$d1
        for d2 in */ ; do
                cd /home/$d1/$d2
                if [ ! -d ".git" ]; then
                        echo Skipping $d2
                        continue
                fi

                echo Adding repo at $d2

                git add -A
                git commit -a -m $dt
                git push --all origin
                cd ..
        done
done
cd ~

shopt -u nullglob

(/root/git 显然是一个私钥文件,当然可以)

以及运行它的 cron 命令:

/etc/cron.d/git

# Git Backup
MAILTO=""
0 19 * * * root /usr/local/bin/setlock -n /tmp/cronlock.3788462754.179891 sh -c $'/root/git.sh &> /dev/null'

最后是崩溃:

所以,除了我自己在 bourne shell 上表现糟糕之外,我不知道发生了什么。如果我知道日志文件在哪里,也许吧,但我不知道。

【问题讨论】:

    标签: git shell ubuntu cron


    【解决方案1】:

    问题是 git 的打包使用了大量内存,当出现问题时提供程序自动重启了 VPS(压缩位文件)

    解决方案:编辑 .sh 文件以包含 git config 指令(以防有人稍后编辑配置)

    #!/bin/sh
    
    git=$(which git)
    dt=$(date +"%d-%m-%Y")
    
    git config --global pack.windowMemory "100m"
    git config --global pack.packSizeLimit "100m"
    git config --global pack.threads "1"
    
    eval `/usr/bin/ssh-agent -s`
    /usr/bin/ssh-add /root/git
    
    shopt -s nullglob
    shopt -s dotglob
    
    cd /home/
    for d1 in */ ; do
            cd /home/$d1
            for d2 in */ ; do
                    cd /home/$d1/$d2
                    if [ ! -d ".git" ]; then
                            echo Skipping $d2
                            continue
                    fi
    
                    echo Adding repo at $d2
    
                    git add -A
                    git commit -a -m $dt
                    git push --all origin
                    cd ..
            done
    done
    cd ~
    
    shopt -u nullglob
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-03-30
      • 1970-01-01
      • 2011-06-28
      • 2021-11-15
      • 2013-03-17
      • 1970-01-01
      • 2011-03-25
      相关资源
      最近更新 更多