gpt4 book ai didi

linux - 在 Linux 中并行运行 bash 脚本

转载 作者:太空宇宙 更新时间:2023-11-04 10:41:13 25 4
gpt4 key购买 nike

我正在尝试运行脚本 (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/, /中创建脚本1.sh,2.sh,.. 生成的临时文件home/files/2/,.. 当我在终端中从位置 /home 运行并行脚本 parallel.sh 或并行 GNU 时。

最佳答案

诀窍是改变每个命令的工作目录。

当您的计算机真的可以同时运行多达 1800 个这样的进程而不会使气候变暖时:

for i in {1..1800}; do (cd $i && ./$i.sh) & done

当并行运行时,您的进程受 cpu 限制,当运行超过处理器数量时通常不会获得吞吐量:

seq 1 1800 | xargs -n1 -P8 -I% sh -c 'cd % && ./%.sh'

关于linux - 在 Linux 中并行运行 bash 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35068913/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com