国内 Linux 集群服务器网络差无法 Git Clone 大项目的解决办法

2023-12-27    前端达人

GitHub 是一个软件源代码托管服务平台,Linux 上使用的大部分工具都可以在上面获得。

但是由于 GitHub 的服务器在国外,国内访问经常出现网络问题导致访问失败,尤其是使用 git clone 对 repo 进行克隆的时候,会经常出现因网络问题而克隆失败。

Linux 集群服务器的用户,在比较难实现科学上网的前提下,对大型 repo 克隆的任务显得尤为困难,而且想使用 gradle build 的话,git clone 似乎是唯一选择。

既然 git clone 一两次不成功,那我就想办法让他 clone 到成功为止,于是我就写了一个循环脚本,将它投递到计算节点上 24h 运行,直到它克隆成功才结束任务。

以克隆 GATK (repo 大小约 300mb)为例,脚本如下:

#!/bin/bash
#SBATCH --job-name=GitClone        #任务名称
#SBATCH --nodelist=litchi-0-1    #计算节点名称
#SBATCH --partition=WHEEL        #使用 WHEEL 用户组
#SBATCH --nodes=1                #使用计算节点数量
#SBATCH --ntasks=1                #使用 1 个线程
#SBATCH --mail-type=end            #任务结束时发送邮件
#SBATCH --mail-user=***@qq.com  #邮箱地址
#SBATCH --output=/home/$USER/Slurm_JobLogs/JobLog_%j_%x.log        #标准输出保存路径
#SBATCH --error=/home/$USER/Slurm_JobLogs/JobLog_%j_%x.err        #标准错误保存路径
#------------------------------------------------------------
# PRINT JOB'S INFORMATION
  source /home/$USER/.bashrc
  threads=$SLURM_NTASKS
  echo "## Job:[$SLURM_JOB_NAME]"
  echo "## Node:[$SLURM_NODELIST]"
  echo "## CPUs:[$SLURM_NTASKS]"
  echo "## Mem:[$SLURM_MEM_PER_NODE]"
  echo `date`
  echo -e $(printf -- "-%.0s" {1..100})"\n" #cut-off-line
#------------------------------------------------------------
# PATH
  repo_url="https://github.com/broadinstitute/gatk.git"
  repo_name="gatk"
#------------------------------------------------------------
# SHELL
  cd /home/$USER/Accessories/Softwares
  while true; do                #循环执行任务
    git clone $repo_url            #执行 git clone
    if [ $? -eq 0 ]; then        #如果以上命令的退出码等于 0 (任务成功)
      echo "Git clone successful!"
      break                        #则退出循环
    else                        #如果命令的退出码不等于 0 (任务失败)
      echo "Git clone failed:( Retrying..."
      rm -rf ./${repo_name}        #则删除这个repo
      sleep 1                    #睡眠 1 秒缓冲一下继续循环
    fi
  done
#------------------------------------------------------------
# JOB ENDS
  echo -e $(printf -- "-%.0s" {1..100}) #cut-off-line
  echo "## Runtime:[`sacct -j $SLURM_JOB_ID --format=Elapsed --noheader | awk '{print $1}' | sed -n '2p'`]"
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42

这个脚本的路径为 ~/Scripts/GitClone_GATK.sh

将任务投递到计算节点运行:

sbatch ~/Scripts/GitClone_GATK.sh
  • 1

最终,这个任务运行了 40 次,历时 13h,终于是克隆成功了!

蓝蓝设计(www.lanlanwork.com )是一家专注而深入的界面设计公司,为期望卓越的国内外企业提供卓越的大数据可视化界面设计B端界面设计桌面端界面设计APP界面设计图标定制用户体验设计交互设计UI咨询高端网站设计平面设计,以及相关的软件开发服务,咨询电话:01063334945。

关键词:UI咨询UI设计服务公司软件界面设计公司、界面设计公司、UI设计公司UI交互设计公司数据可视化设计公司用户体验公司高端网站设计公司

银行金融软件UI界面设计能源及监控软件UI界面设计气象行业UI界面设计轨道交通界面设计地理信息系统GIS UI界面设计航天军工软件UI界面设计医疗行业软件UI界面设计教育行业软件UI界面设计企业信息化UI界面设计、软件qt开发软件wpf开发软件vue开发

分享本文至:

日历

链接

个人资料

蓝蓝设计的小编 http://www.lanlanwork.com

存档