我这样想,但确定它是可以改进的,因为bash因某种原因无法完成......
#!/bash/bin
cd directory
gfortran -O3 code1.f90 -o a1.out
gfortran -O3 code2.f90 -o a2.out
gfortran -O3 code3.f90 -o a3.out
gfortran -O3 code4.f90 -o a4.out
gfortran -O3 code5.f90 -o a5.out
gfortran -O3 code6.f90 -o a6.out
./a1.out & ./a2.out & ./a3.out & ./a4.out & ./a5.out & ./a6.out
echo fin
非常感谢!
更新:
我试过这样的: cd BC_EQ
nohup sh -c "gfortran -O3 -fopenmp LBM_Re100_N150_Ma01_BC_Eq.f90 -o a1.out && ./a1.out " &
nohup sh -c "gfortran -O3 -fopenmp LBM_Re100_N150_Ma015_BC_Eq.f90 -o a2.out && ./a2.out " &
nohup sh -c "gfortran -O3 -fopenmp LBM_Re100_N150_Ma02_BC_Eq.f90 -o a3.out && ./a3.out " &
nohup sh -c "gfortran -O3 -fopenmp LBM_Re125_N150_Ma01_BC_Eq.f90 -o a4.out && ./a4.out " &
nohup sh -c "gfortran -O3 -fopenmp LBM_Re125_N150_Ma015_BC_Eq.f90 -o a5.out && ./a5.out " &
nohup sh -c "gfortran -O3 -fopenmp LBM_Re125_N150_Ma02_BC_Eq.f90 -o a6.out && ./a6.out " &
echojaestà
但最终吐了:
nohup:将输出附加到nohup.out'
nohup: nohup: appending output to
nohup.out'
将输出附加到“nohup.out”
6个代码中只有4个正在执行,并且它们不会像以前那样在屏幕上吐出任何东西..为什么??
然后如果我尝试:
#!/bash/bin
cd BC_EQ
gfortran -O3 -fopenmp LBM_Re100_N150_Ma01_BC_Eq.f90 -o a1.out && ./a1.out &
gfortran -O3 -fopenmp LBM_Re100_N150_Ma015_BC_Eq.f90 -o a2.out && ./a2.out &
gfortran -O3 -fopenmp LBM_Re100_N150_Ma02_BC_Eq.f90 -o a3.out && ./a3.out &
gfortran -O3 -fopenmp LBM_Re125_N150_Ma01_BC_Eq.f90 -o a4.out && ./a4.out &
gfortran -O3 -fopenmp LBM_Re125_N150_Ma015_BC_Eq.f90 -o a5.out && ./a5.out &
gfortran -O3 -fopenmp LBM_Re125_N150_Ma02_BC_Eq.f90 -o a6.out && ./a6.out
echo ja està
它说错误: 致命错误:无法删除临时模块文件'cellconst.mod0':没有此类文件或目录 致命错误:无法删除临时模块文件'cellconst.mod0':没有此类文件或目录 致命错误:无法删除临时模块文件'cellconst.mod0':没有此类文件或目录 致命错误:无法删除临时模块文件'cellconst.mod0':没有此类文件或目录 致命错误:无法删除临时模块文件'd2q9const.mod0':没有此类文件或目录
._·
答案 0 :(得分:1)
在最后一个a6.out之后添加一个&符号。
答案 1 :(得分:1)
问题在于,您必须在每个要在后台运行的命令之后添加amersand。这意味着在a6
之后:./a6.out &
。
但我建议你使用for
来自动化这个过程:
for i in {1..6}
do
nohup ./a$i.out &
done
你也可以并行编译:
for i in {1..6}
do
nohup sh -c "gfortran -O3 code$i.f90 -o a$i.out && ./a$i.out" &
done
答案 2 :(得分:0)
试试这个:
./a1.out &
PIDS=$!
./a2.out &
PIDS="$PIDS "$!
./a3.out &
PIDS="$PIDS "$!
./a4.out &
PIDS="$PIDS "$!
./a5.out &
PIDS="$PIDS "$!
./a6.out &
PIDS="$PIDS "$!
wait $PIDS
更新:
$! :man bash
/Special Parameters
:扩展为最近执行的后台(异步)命令的进程ID。
PIDS是一个变量,它将包含由空格分隔的进程ID,以便扩展提供一个等待的参数列表