gpt4 book ai didi

linux - 并行运行 bash shell 并等待

转载 作者:IT王子 更新时间:2023-10-29 01:00:52 28 4
gpt4 key购买 nike

我在一个目录中有 100 个文件,我想分几个步骤处理每个文件,而第 1 步很耗时。所以伪代码是这样的:

for filename in ~/dir/*; do
run_step1 filename >${filename}.out &
done

for outfile in ~/dir/*.out; do
run_step2 outfile >${outfile}.result
done

我的问题是如何检查给定输入文件的第 1 步是否已完成。我曾经在 C# 中使用 threads.join,但不确定 bash shell 是否具有等效项。

最佳答案

看起来你想要:

for filename in ~/dir/*
do
(
run_step1 $filename >${filename}.out
run_step2 ${filename}.out >${filename}.result
) &
done
wait

这会在单独的子 shell 中处理每个文件,首先对每个文件运行第 1 步,然后运行第 2 步,但会并行处理多个文件。

您唯一需要担心的问题是确保您不会尝试并行运行太多进程。您可能需要考虑 GNU parallel

您可能想编写一个简单的脚本(doit.sh,也许):

run_step1 "$1" > "$1.out"
run_step2 "$1.out" > "$1.result"

然后从并行调用该脚本,每次调用一个文件。

关于linux - 并行运行 bash shell 并等待,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23135759/

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