【发布时间】:2021-08-11 18:09:35
【问题描述】:
我想从通过参数传递的文件中读取链接,并从每个链接下载内容。 如何与 20 个进程并行执行? 我了解如何使用无限数量的进程来做到这一点:
#!/bin/bash
filename="$1"
mkdir -p saved
while read -r line; do
url="$line"
name_download_file_sha="$(echo $url | sha256sum | awk '{print $1}').jpeg"
curl -L $url > saved/$name_download_file_sha &
done < "$filename"
wait
【问题讨论】:
-
shell 根本不暴露线程。您可以轻松地使用并行进程,方法是使用
&将每个作业作为后台,就像您在此处所做的那样。您显然实际上是在问如何限制并发进程的数量。我已经相应地更新了您的问题。 -
问题和代码不匹配。究竟是什么问题?每个 curl 命令都在后台运行,因此是并行的。您想读取 20 个文件而不是 1 个文件?或者你想运行 20 curl(但是为什么?)
标签: linux bash parallel-processing