假设我有 10K 个文件和一个bash
处理单个文件的脚本。现在我想同时处理所有这些文件,只有K
脚本并行运行。我不想(显然)多次处理任何文件。
你会如何建议实施它bash
?
假设我有 10K 个文件和一个bash
处理单个文件的脚本。现在我想同时处理所有这些文件,只有K
脚本并行运行。我不想(显然)多次处理任何文件。
你会如何建议实施它bash
?
我很高兴您可以通过使用“(”和“)”轻松地在不同的进程中运行部分脚本。如果添加&
,则父进程将不会等待子进程。所以你实际上使用( command1; command2; command3; ... ) &
:
while ... do
(
your script goes here, executed in a separate process
) &
CHILD_PID = $!
done
并且还$!
为您提供子进程的 PID。你还需要知道什么?当您到达已k
启动的进程时,您需要等待其他进程。这是使用wait <PID>
:
wait $CHILD_PID
如果您想等待所有这些,只需使用wait
.
这应该足以让您实施系统。
for f1 in *;do
(( cnt = cnt +1 ))
if [ cnt -le $k ];then
nohup ./script1 $f1 &
continue
fi
wait
cnt=0
done
请测试一下。没时间