通过生成多个进程来利用所有核心,可以加快大多数批处理文件 Bash 脚本的速度。我想编写一个脚本来处理一堆文件,并在进程之间平均分配要处理的文件数量。我该怎么做?
答案1
答案2
我不知道这是否是最好的方法,但这就是我想出的办法。
用法:batch.sh [number of processes to use]
批处理.sh:
end=$(( $1 - 1 ))
for i in `seq 0 $end`;
do
echo Spawning helper $i of $end
./helper.sh $i $1 &
done
帮助器.sh:
n=$1
for file in ./*; do
# Your code here v
echo Processing file: $file
# ^
n=$((n+1))
n=$((n%$2))
done
这将生成 n 个进程,每个进程处理一个文件,然后跳过 (n - 1) 个文件。进程 (i mod n) 处理第 i 个文件。