【发布时间】:2016-01-28 18:11:58
【问题描述】:
我正在尝试运行脚本 (1.sh)
spin -a /home/files/1/1.pml;
gcc -O2 -DXUSAFE -DSAFETY -DNOCLAIM -w -o pan pan.c >log1.txt;
./pan -m100000 >log2.txt;
spin -p -s -r -X -v -n123 -l -g -k /home/files/1/1.pml.trail \
-u10000 /home/files/1/1.pml >log3.txt;
命令spin -a ...; 生成临时文件(pan.c、pan.h),供下一个gcc -O2.. 命令使用。如果我在终端中运行脚本,它会在同一位置创建临时文件。
我想并行运行多个脚本。我尝试了两件事,首先编写一个脚本在后台循环运行(parallel.sh)
for((i=1;i<1800;i++))
do
/home/files/$i/$i.sh &
done
其次使用并行 gnu parallel -j0 sh /home/files/{}/{}.sh ::: {1..1800}。
这两种方法都在调用它们的位置而不是脚本位置创建了临时文件。
例如,如果我从home/files 运行脚本“parallel.sh”,则临时文件将在“home/files”而不是“home/files/1”、“home/files/2”位置创建,等等
请建议一种方法,以便在我并行运行并行脚本时,分别在目录/home/file/1/、/home/files/2/、.. 中创建由脚本 1.sh、2.sh、.. 生成的临时文件。从位置 /home 终端中的 sh 或并行 GNU。
【问题讨论】:
-
最简单的解决方法是将
cd命令添加到您的脚本中,以便每次调用都转到您想要的目录。
标签: linux bash shell parallel-processing