2023-12-27 前端達人
GitHub 是一個軟件源代碼托管服務(wù)平臺,Linux 上使用的大部分工具都可以在上面獲得。
但是由于 GitHub 的服務(wù)器在國外,國內(nèi)訪問經(jīng)常出現(xiàn)網(wǎng)絡(luò)問題導(dǎo)致訪問失敗,尤其是使用 git clone
對 repo 進行克隆的時候,會經(jīng)常出現(xiàn)因網(wǎng)絡(luò)問題而克隆失敗。
Linux 集群服務(wù)器的用戶,在比較難實現(xiàn)科學(xué)上網(wǎng)的前提下,對大型 repo 克隆的任務(wù)顯得尤為困難,而且想使用 gradle
build 的話,git clone
似乎是唯一選擇。
既然 git clone
一兩次不成功,那我就想辦法讓他 clone 到成功為止,于是我就寫了一個循環(huán)腳本,將它投遞到計算節(jié)點上 24h 運行,直到它克隆成功才結(jié)束任務(wù)。
以克隆 GATK (repo 大小約 300mb)為例,腳本如下:
#!/bin/bash
#SBATCH --job-name=GitClone #任務(wù)名稱
#SBATCH --nodelist=litchi-0-1 #計算節(jié)點名稱
#SBATCH --partition=WHEEL #使用 WHEEL 用戶組
#SBATCH --nodes=1 #使用計算節(jié)點數(shù)量
#SBATCH --ntasks=1 #使用 1 個線程
#SBATCH --mail-type=end #任務(wù)結(jié)束時發(fā)送郵件
#SBATCH --mail-user=***@qq.com #郵箱地址
#SBATCH --output=/home/$USER/Slurm_JobLogs/JobLog_%j_%x.log #標(biāo)準輸出保存路徑
#SBATCH --error=/home/$USER/Slurm_JobLogs/JobLog_%j_%x.err #標(biāo)準錯誤保存路徑
#------------------------------------------------------------
# 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 #循環(huán)執(zhí)行任務(wù)
git clone $repo_url #執(zhí)行 git clone
if [ $? -eq 0 ]; then #如果以上命令的退出碼等于 0 (任務(wù)成功)
echo "Git clone successful!"
break #則退出循環(huán)
else #如果命令的退出碼不等于 0 (任務(wù)失敗)
echo "Git clone failed:( Retrying..."
rm -rf ./${repo_name} #則刪除這個repo
sleep 1 #睡眠 1 秒緩沖一下繼續(xù)循環(huán)
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'`]"
這個腳本的路徑為 ~/Scripts/GitClone_GATK.sh
將任務(wù)投遞到計算節(jié)點運行:
sbatch ~/Scripts/GitClone_GATK.sh
最終,這個任務(wù)運行了 40 次,歷時 13h,終于是克隆成功了!
藍藍設(shè)計(www.teruid.com )是一家專注而深入的界面設(shè)計公司,為期望卓越的國內(nèi)外企業(yè)提供卓越的大數(shù)據(jù)可視化界面設(shè)計、B端界面設(shè)計、桌面端界面設(shè)計、APP界面設(shè)計、圖標(biāo)定制、用戶體驗設(shè)計、交互設(shè)計、UI咨詢、高端網(wǎng)站設(shè)計、平面設(shè)計,以及相關(guān)的軟件開發(fā)服務(wù),咨詢電話:01063334945。
關(guān)鍵詞:UI咨詢、UI設(shè)計服務(wù)公司、軟件界面設(shè)計公司、界面設(shè)計公司、UI設(shè)計公司、UI交互設(shè)計公司、數(shù)據(jù)可視化設(shè)計公司、用戶體驗公司、高端網(wǎng)站設(shè)計公司
銀行金融軟件UI界面設(shè)計、能源及監(jiān)控軟件UI界面設(shè)計、氣象行業(yè)UI界面設(shè)計、軌道交通界面設(shè)計、地理信息系統(tǒng)GIS UI界面設(shè)計、航天軍工軟件UI界面設(shè)計、醫(yī)療行業(yè)軟件UI界面設(shè)計、教育行業(yè)軟件UI界面設(shè)計、企業(yè)信息化UI界面設(shè)計、軟件qt開發(fā)、軟件wpf開發(fā)、軟件vue開發(fā)
藍藍設(shè)計的小編 http://www.teruid.com