Warriorhuahua的个人博客分享 http://blog.sciencenet.cn/u/Warriorhuahua

博文

shell并行处理脚本

已有 590 次阅读 2021-3-25 08:31 |个人分类:Linux学习|系统分类:科研笔记

1.原始运算

#!/bin/bash

start_time=`date +%s` #定义脚本运行的开始时间

 

for ((i=1;i<=100;i++))

do

        sleep 1  #sleep 1用来模仿执行一条命令需要花费的时间(可以用真实命令来代替)

        echo 'success'$i;       

done

 

stop_time=`date +%s`  #定义脚本运行的结束时间

 

echo "TIME:`expr stoptime−stoptime−start_time`"


2.多线程并行运算

#!/bin/bash

start=`date +%s` #定义脚本运行的开始时间

 

for ((i=1;i<=100;i++))

do

{

        sleep 1  #sleep 1用来模仿执行一条命令需要花费的时间(可以用真实命令来代替)

        echo 'success'$i; 

 }&              #用{}把循环体括起来,后加一个&符号,代表每次循环都把命令放入后台运行

                 #一旦放入后台,就意味着{}里面的命令交给操作系统的一个线程处理了

                 #循环了100次,就有100个&把任务放入后台,操作系统会并发100个线程来处理

                 #这些任务         

done    

wait             #wait命令的意思是,等待(wait命令)上面的命令(放入后台的)都执行完毕了再

                 #往下执行。

                 #在这里写wait是因为,一条命令一旦被放入后台后,这条任务就交给了操作系统

                 #shell脚本会继续往下运行(也就是说:shell脚本里面一旦碰到&符号就只管把它

                 #前面的命令放入后台就算完成任务了,具体执行交给操作系统去做,脚本会继续

                 #往下执行),所以要在这个位置加上wait命令,等待操作系统执行完所有后台命令

end=`date +%s`  #定义脚本运行的结束时间

 

echo "TIME:`expr end−end−start`"


3.实例

批量多线程下载rinex测站数据

#!/bin/bash

year=$1

day1=10#$2

day2=10#$3

yr=${year:2:4}

mkdir rinex

#------------------download rinex------------------------

cd rinex

#site=(abmf abpo adis aggo aira ajac albh algo alic alrt amc2 ankr anmg antc areg areq arev artu aruc asc1 ascg aspa auck azu1 badg bahr baie bake bako bamf barh bhr3 bhr4 bik0 bill bjco bjfs bjnm blyt bnoa bogi bogt bor1 braz brew brft brmu brst brun brux bshm btng bucu bzrg cags cas1 ccj2 cebr cedu cggn chan chat chil chof chpg chpi chti chum chur chwk cit1 ckis cksv clar cmp9 cmum cnmr coco cord coso cote coyq cpnm cpvg crao crfp cro1 cusv cut0 cuut cztg dae2 daej dakr darw dav1 dear dgar dhlg djig dlf1 dltv drag drao dubo dum1 dund dyng ebre eil3 eil4 eprt escu eusm faa1 fair fale falk ffmj flin flrs frdn ftna func gamb gamg ganp geno glps glsv gmas gmsd gode godn gods godz gol2 gold gop6 gop7 gope goug grac gras graz guam guao guat guug haly hamd harb harv hers hert hksl hkws hlfx hnlc hnpt hnus hob2 hofn holb holm holp hrag hrao hueg hyde ieng iisc ineg invk iqal iqqe irkj irkm irkt isba ispa ista jctw jfng jnav jog2 joz2 joze jplm jpre karr kat1 kely kerg kgni khar kir0 kir8 kiri kiru kit3 kitg kmnm kokb kokv kos1 kouc koug kour krgg ksmv kunm kuuj kzn2 lae1 lama laut lbch lck3 lck4 leij lhaz llag lmmf lpal lpgs lroc m0se mac1 mad2 madr mag0 maju mal2 mana 6-mAR 7-mAR mars mas1 mat1 mate matg maui maw1 mayg mbar mchl mcil mcm4 mdo1 mdvj medi meli met3 metg mets mfkg mgue mikl mizu mkea mobj mobk mobn mobs moiu monp morp mqzg mrl1 mrl2 mro1 mtbg mtka mtv1 mtv2 nain nama nano naur ncku nico nist nium nklg nlib nnor not1 noum novm nrc1 nril nrl1 nrmd ntus nurk nvsk nya1 nya2 nyal oak1 oak2 obe4 ohi2 ohi3 ons1 onsa opmt orid osn3 osn4 ous2 owmg pado palm palv parc park pbri pdel pen2 penc pert petp pets pgen picl pie1 pimo pin1 pngm pohn pol2 polv pots pove pppc prds pre3 pre4 ptag ptbb ptgg ptvl qaq1 qiki qui3 qui4 quin rabt ramo rbay rcmn rdsd recf redu reso reun reyk rgdg riga rio2 riop roap rock roth salu samo sant sask sass savo sbok sch2 scip scor scrz sctb scub sejn sey2 seyg sfdm sfer sgoc shao she2 simo sin1 smst sni1 sod3 sofi sola solo spk1 spt0 sptu ssia stfu sthl stj3 stjo stk2 str1 str2 sulp suth sutm sutv suwn svtl sydn syog tabl tana tash tcms tdou tehn thtg thti thu2 thu3 tid1 tid2 tidb tit2 tixi tlse tlsg tnml tong torp tow2 trak tro1 tsk2 tskb tubi tukt tuva twtf ucal uclp uclu ufpr ulab uldi unb3 unbd unbj unbn unsa unx2 unx3 urum usn7 usn8 usn9 usno usud uzhl vacs vald vesl vill vis0 vndp voim wab2 wark warn wdc5 wdc6 wes2 wgtn whc1 whit widc will wind wlsn wroc wslr wsrt wtz3 wtza wtzr wtzs wtzz wuh2 wuhn xian xmis yakt yar2 yar3 yarr yebe yel2 yell yibl ykro yons yssk zamb zeck zim2 zim3 zimj zimm zwe2)


site=(artu bjfs chan coco daej iisc pol2 yssk tash)

for ((a=day1;a<day1;a<day2+1;a++))

do

    for ((j=0;j<${#site[*]};j++))

    do

    {

        var=(printf"(printf"a")

        if [ ! -f "site[$j]site[$j]{var}0.${yr}o" ]; then

        wget -c -t 1 -w 15 -T 15 ftp://igs.gnsswhu.cn//pub/gps/data/daily/year/year/{var}/yro/yro/{site[j]}j]}{var}0.${yr}o.Z

        sh_crx2rnx -f *.Z

        }&

        done

        wait

done

cd ..

#bash batch_get_rinex.sh 2018 017 018




http://blog.sciencenet.cn/blog-3415145-1278450.html

上一篇:针对windows下Python不能直接解压.Z压缩包的解决办法
下一篇:linux下安装Anaconda(自带python3.6.3环境)

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2021-10-26 07:43

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部