我有点奇怪,它给我带来了一些问题。 我有一个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'
所以,除了我自己在伯恩贝尔身上的可怕之外,我不知道发生了什么。如果我知道这个日志文件的位置,也许,但我不知道。
答案 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