Bash 脚本并行处理有限数量的命令

2024-10-12 10:28:00
admin
原创
222
摘要:问题描述:我有一个如下所示的 bash 脚本:#!/bin/bash wget LINK1 >/dev/null 2>&1 wget LINK2 >/dev/null 2>&1 wget LINK3 >/dev/null 2>&amp...

问题描述:

我有一个如下所示的 bash 脚本:

#!/bin/bash
wget LINK1 >/dev/null 2>&1
wget LINK2 >/dev/null 2>&1
wget LINK3 >/dev/null 2>&1
wget LINK4 >/dev/null 2>&1
# ..
# ..
wget LINK4000 >/dev/null 2>&1

但是处理每一行直到命令完成然后移动到下一行非常耗时,我想例如一次处理 20 行,然后当它们完成后再处理另外 20 行。

我想过wget LINK1 >/dev/null 2>&1 &将命令发送到后台并继续,但这里有 4000 行,这意味着我将遇到性能问题,更不用说我应该同时启动多少个进程受到限制,所以这不是一个好主意。

我现在想到的一个解决方案是检查其中一个命令是否仍在运行,例如在 20 行之后我可以添加这个循环:

while [  $(ps -ef | grep KEYWORD | grep -v grep | wc -l) -gt 0 ]; do
sleep 1
done

当然,在这种情况下,我需要将 & 附加到行尾!但我觉得这不是正确的做法。

那么我实际上如何将每 20 行组合在一起并等待它们完成后再转到接下来的 20 行,这个脚本是动态生成的,所以我可以在生成它时对其进行任何我想要的数学运算,但它不必使用 wget,它只是一个例子,所以任何特定于 wget 的解决方案都不会对我有任何好处。


解决方案 1:

使用wait内置的:

process1 &
process2 &
process3 &
process4 &
wait
process5 &
process6 &
process7 &
process8 &
wait

对于上面的例子,4 个进程process1...process4将在后台启动,并且 shell 将等待这些进程完成后再启动下一组进程。

来自GNU 手册:

wait [jobspec or pid ...]

等待每个进程 ID pid 或作业规范 jobspec 指定的子进程退出,并返回等待的最后一个命令的退出状态。如果给出了作业规范,则等待作业中的所有进程。如果没有给出参数,则等待所有当前活动的子进程,返回状态为零。如果 jobspec 和 pid 均未指定 shell 的活动子进程,则返回状态为 127。

解决方案 2:

请参阅parallel。其语法与 类似xargs,但它并行运行命令。

解决方案 3:

事实上,xargs 它可以为您并行运行命令。有一个特殊的-P max_procs命令行选项可以实现这一点。请参阅man xargs

解决方案 4:

您可以运行20个进程并使用以下命令:

wait

您的脚本将等待所有后台作业完成后再继续。

相关推荐
  政府信创国产化的10大政策解读一、信创国产化的背景与意义信创国产化,即信息技术应用创新国产化,是当前中国信息技术领域的一个重要发展方向。其核心在于通过自主研发和创新,实现信息技术应用的自主可控,减少对外部技术的依赖,并规避潜在的技术制裁和风险。随着全球信息技术竞争的加剧,以及某些国家对中国在科技领域的打压,信创国产化显...
工程项目管理   2577  
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   1553  
  IPD(Integrated Product Development)流程作为一种先进的产品开发管理模式,在众多企业中得到了广泛应用。其中,技术评审与决策评审是IPD流程中至关重要的环节,它们既有明显的区别,又存在紧密的协同关系。深入理解这两者的区别与协同,对于企业有效实施IPD流程,提升产品开发效率与质量具有重要意义...
IPD管理流程   26  
  本文介绍了以下10款项目管理软件工具:禅道项目管理软件、ClickUp、Freshdesk、GanttPRO、Planview、Smartsheet、Asana、Nifty、HubPlanner、Teamwork。在当今快速变化的商业环境中,项目管理软件已成为企业提升效率、优化资源分配和确保项目按时交付的关键工具。然而...
项目管理系统   21  
  建设工程项目质量关乎社会公众的生命财产安全,也影响着企业的声誉和可持续发展。高质量的建设工程不仅能为使用者提供舒适、安全的环境,还能提升城市形象,推动经济的健康发展。在实际的项目操作中,诸多因素会对工程质量产生影响,从规划设计到施工建设,再到后期的验收维护,每一个环节都至关重要。因此,探寻并运用有效的方法来提升建设工程...
工程项目管理制度   18  
热门文章
项目管理软件有哪些?
曾咪二维码

扫码咨询,免费领取项目管理大礼包!

云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用