shell脚本总结

文章详细介绍了如何在服务器(master和sbatch)上使用shell脚本进行任务提交,包括文件夹创建、文件复制以及job文件配置。同时,也展示了如何在本地电脑上用shell脚本处理大量数据和进行拟合操作。重点在于shell命令的运用和脚本的自动化功能。
摘要由CSDN通过智能技术生成

总结一下目前用到的shell脚本:

 for bb in  1.10 1.20 1.30 1.40 1.50 1.60 1.70; do
 # 可以简写为
  for bb in  $(seq 1.10 0.10 1.70); do

并且可以通过 echo $(seq 1.10 0.10 1.70) 可以得到 1.10 1.20 1.30 1.40 1.50 1.60 1.70

1. 服务器中shell脚本的应用

(1) master服务器上提交任务:

 for bb in 1.06 1.10 1.20 1.30 1.40 1.50 1.60 1.70; do
 for n in 5000 8000 10000 ; do
   cd ~/Ising/gap/
    mkdir gap-$n-$bb                      #新建文件夹
    cp a.out gap-$n-$bb                  #将a.out复制至每一个文件夹
    cd gap-$n-$bb  
    echo $n $bb > 'read.in'
    echo '#'!/bin/bash > job               #  '#'和'>'  单引号指的不具备之前的功能,只是这个符号表示
    echo '#'PBS -N gap-$n-$bb  >> job
    echo '#'PBS -l nodes=1:ppn=1 >> job
    echo '#'PBS -q student >> job
    echo '#'PBS -o .out1 >> job
    echo cd '$'PBS_O_WORKDIR >> job
    echo ./a.out '>' output.txt >> job
    qsub job
    echo gap-$n-$bb                          #在外面输出,可以看到任务提交到了哪一个
    sleep 1 
  done
  done

(2) sbatch服务器上提交任务:

 for bb in 1.06 1.10 1.20 1.30 1.40 1.50 1.60 1.70; do
 for n in 5000 8000 10000 ; do
   cd ~/Ising/gap/
    mkdir gap-$n-$bb                      #新建文件夹
    cp a.out gap-$n-$bb                  #将a.out复制至每一个文件夹
    cd gap-$n-$bb  
    echo $n $bb > 'read.in'
    echo '#'!/bin/bash > job               #  '#'和'>'  单引号指的不具备之前的功能,只是这个符号表示
    echo '#'SBATCH -J gap-$n-$bb   >> job        ## -----------------------
    echo '#'SBATCH -p debug >> job               ##
    echo '#'SBATCH -N 1 >> job                   ##   两个服务器不同的地方!
    echo '#'SBATCH -n 1 >> job                   ##
    echo ./a.out '>' output.txt >> job           ##----------------------------
    qsub job
    echo gap-$n-$bb                         #在外面输出,可以看到任务提交到了哪一个
    sleep 1 
  done
  done

(3) move.sh
目的:将服务器中大量文件夹中的data文件复制到某一个文件夹“move”中,以便画图。

 for bb in 1.06 1.10 1.20 1.30 1.40 1.50 1.60 1.70; do
 for n in 5000 8000 10000 ; do
    cd ~/Ising/gap/                  #打开文件夹所在的目录
    mkdir move-gap                   # 新建文件夹(所有data文件放置的地方)              
    cd gap-$bb-$n                    #依次打开每个data文件所在的位置
    cp lngap-b-$bb-$n.dat ../move-gap        #把data文件复制到 新建文件夹中  
  done
  done

2. 电脑上的shell脚本的应用

(1) data.sh
对大量已有的data数据文件做某个相同操作时,可以用shell脚本(不断输入不同的变量bb)来完成。

  n=05000
  for bb in 1.06 1.10 1.20 1.30 1.40 1.50 1.60; do
    echo  $bb  > 'read.in'
    ./a.out                           
  done

(2) rfit.sh 取不同区间拟合临界指数

lm=-10.8  
for lx in -10.7 -10.6 -10.4 -10.2 -10.0 -9.8 -9.6 -9.4 -9.2 -9.0 -8.8 -8.6 -8.5; do   # 不断改变拟合范围 [lm:lx]
lb=1.50

sed -i '1s/.*/lmin='$lm'/' pfeta.gnu
sed -i '2s/.*/lmax='$lx'/' pfeta.gnu
sed -i '3s/.*/bb="'$lb'"/' pfeta.gnu

gnuplot pfeta.gnu
done

另外,需结合 pfeta.gnu 画图文件

lmin=-10.8
lmax=-8.5
bb="1.50"

set ylabel '\large $\ln \Delta $'
set xlabel '\large $\ln (h_w-h_L)$'

f1(x)=a1+b1*x
fit [lmin:lmax][] f1(x)  'gap-b-'.bb.'-08000.dat' u 3:4 via a1,b1     #'mc-'.t.'.dat'

set print 'fit-'.bb.'.dat' append     #将不同拟合区间得到的数据输出

# print bb,lmin,lmax,a1,b1 
print sprintf("%s  %.2f  %.14f  %.14f ", bb, -lmax, b1, b2 ) 
set print

set t post enh color font ',25'

rep
set output
se t qt
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值