git"压缩对象"崩溃 - Ubuntu

时间:2015-08-31 16:48:49

标签: git shell ubuntu cron

我有点奇怪,它给我带来了一些问题。 我有一个cron工作,运行git,基本上"支持"一堆开发网站。

我还将这个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'

最后崩溃: Crash

所以,除了我自己在伯恩贝尔身上的可怕之外,我不知道发生了什么。如果我知道这个日志文件的位置,也许,但我不知道。

1 个答案:

答案 0 :(得分:0)

问题是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