记录在Linux服务器上,批量创建、移动、启动、提取,命名规范的相关计算文件的简单实现。适用情况在Linux下批量运行测试算例的简单实现(一) 中有详细介绍,此处只对改进的代码做相应的更新,以为备忘。
1、批量创建、移动 FileCreater.sh,代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 #!/bin/bash floderName=$1 		#输入参数1 ,文件夹名称 dir_id_start=$2 		#输入参数2 ,起始编号 dir_id_end=$3 		#输入参数3 ,结束编号 submitName=submit submitSuffix=.sh while  test $dir_id_start -le $dir_id_enddo 	mkdir $floderName$dir_id_start 	cp mesh_square.dat $floderName$dir_id_start/mesh.dat 	cp verification_oscillation.erosion $floderName$dir_id_start/$floderName$dir_id_start.erosion 	mv $submitName$dir_id_start$submitSuffix $floderName$dir_id_start 	cd $floderName$dir_id_start 	mkdir fluid 	mkdir solid 	chmod +x $submitName$dir_id_start$submitSuffix 	cd .. 	dir_id_start=`expr $dir_id_start + 1 ` done 
运行:./FileCreater.sh test 1 100submit1.sh, submit2.sh, ..., submit100.sh分配到100个文件夹(名称通过输入参数floderName定义,本例中为test1, test2, ..., test100)中,并将计算所需的主程序按计算参数文件进行编号后分配至对应的文件夹,并拷贝及创建相应的文件及文件夹,修改权限。
2、批量启动 ProcessStarter.sh,代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 #!/bin/bash dir_name=$1 			#输入参数1 ,文件夹名称 dir_id=$2 			#输入参数2 ,起始编号 dir_id_end=$3 		#输入参数3 ,结束编号 submitName=./submit submitSuffix=.sh while  test $dir_id -le $dir_id_enddo 	cd $dir_name$dir_id 	nohup $submitName$dir_id$submitSuffix $dir_name$dir_id.erosion & 	cd .. 	dir_id=`expr $dir_id + 1 ` done 
运行:./ProcessStarter.sh test 1 100test1.erosion, test2.erosion, ..., test100.erosion,运行方式:后台运行。
3、批量提取 ResultGatherer.sh,代码如下:
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 #!/bin/bash sourcePath=/home/hmliao/		#数据源路径 destinationPath=/home/hmliao/createFloder/		#数据目标路径 floderName=$1 		#输入参数1 ,文件夹名称			 floderStart=$2 		#输入参数2 ,N个测试文件中需要提取的范围(开始) floderEnd=$3 		#输入参数3 ,N个测试文件中需要提取的范围(结束) fluidStart=$4 		#输入参数4 ,每个份测试文件中M份结果数据,需要提取的结果范围(开始) fluidEnd=$5 			#输入参数5 ,每个份测试文件中M份结果数据,需要提取的结果范围(结束) fileName=fluid_0_ submitSuffix=.vtu #创建目录,用于放置提取的结果 dir_id1=$floderStart while  test $dir_id1 -le $floderEnddo 	mkdir $destinationPath$floderName$dir_id1 	dir_id1=`expr $dir_id1 + 1 ` done #提取结果至前述创建的目录 dir_id2=$floderStart while  test $dir_id2 -le $floderEnddo 	#Copy fluid files 	fileId=$fluidStart 	while  test $fileId -le $fluidEnd 	do  		cp  $sourcePath$1 $dir_id2/fluid/$fileName$fileId$submitSuffix $destinationPath$1 $dir_id2/ 		fileId=`expr $fileId + 1 ` 	done dir_id2=`expr $dir_id2 + 1 ` done 
运行:./ResultGatherer.sh Result 1 100 1 30