首页 / 知识
具有最大进程数的并行Bash脚本
2023-04-13 20:23:00

Parallelize Bash script with maximum number of processes让我们说我在Bash中有一个循环:
天真的方法似乎是:
这将一次运行所有 您如何编写此循环,以便总是同时运行X个 根据您要执行的操作,xargs也可以提供帮助(此处:使用pdf2ps转换文档):
来自文档:
使用GNU Parallel http://www.gnu.org/software/parallel/,您可以编写:
GNU Parallel还支持在远程计算机上运行作业。这将在远程计算机上的每个CPU内核上运行一个内核-即使它们具有不同数量的内核:
一个更高级的示例:在这里,我们列出了要运行my_script的文件。文件具有扩展名(也许是.webp)。我们希望将my_script的输出放在basename.out中的文件旁边(例如foo.webp-> foo.out)。我们希望为计算机具有的每个核心运行一次my_script,我们也希望在本地计算机上运行它。对于远程计算机,我们希望将要处理的文件传输到给定的计算机。当my_script完成时,我们希望将foo.out传输回去,然后再从远程计算机中删除foo.webp和foo.out:
GNU Parallel确保每个作业的输出不会混合,因此您可以将输出用作另一个程序的输入:
有关更多示例,请参见视频:https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1
这里是可以插入.bashrc并用于日常一个班轮的替代解决方案:
要使用它,必须要做的就是将
使用 使用Makefile代替普通的bash,然后使用 或者您可以使用
如果您需要存储作业的结果,则将其结果分配给变量。在 也许尝试使用并行化实用程序而不是重写循环?我是xjobs的忠实粉丝。通常,在设置新的数据库服务器时,我一直使用xjobs在网络上批量复制文件。 如果您熟悉
然后运行
最多可并行运行NUMBER个命令。 虽然可能无法在
没有这些缺陷的另一个近似值是:
请注意,此作业很容易适应,还可以在每个作业结束时检查其退出代码,因此您可以警告用户作业失败,或者根据失败的作业数量为 此代码的问题仅在于:
解决最后一个问题的解决方案必须使用 在 bash功能:
使用:
我从事的项目使用wait命令来控制并行shell(实际上是ksh)进程。为了解决您对IO的担忧,在现代OS上,并行执行实际上可能会提高效率。如果所有进程都读取磁盘上的相同块,则只有第一个进程必须运行物理硬件。其他进程通常将能够从内存中OS的磁盘缓存中检索该块。显然,从内存中读取要比从磁盘中读取快几个数量级。同样,该优点不需要更改编码。 n 对于大多数目的来说这可能已经足够了,但并不是最佳选择。
n 您可以使用一个简单的嵌套for循环(用下面的N和M替换适当的整数):
这将在M轮中执行do_something N * M次,每轮并行执行N个作业。您可以使N等于您拥有的CPU数量。 n $ DOMAINS = "命令中某些域的列表"
完成 Ndomains = 对于$(seq 1 1 $ Ndomains)中的i 在此概念中, 将用于并行化。重要的是评估的最后一行是\\' |
最新内容
相关内容
linux进程的命令行?
linux进程的命令行?,地址,工作,系统,信息,命令,管理,名称,进程,目录,服务,linux查看进程命令1、linux 下查看进程可以使用的命令:ps命令查找与linux脚本命令输信息?
linux脚本命令输信息?,系统,信息,代码,脚本,数据,工具,发行,命令,变量,文件,linux下shell脚本命令shell变量调出命令。linux中的shell脚本有多linux上启动脚本命令?
linux上启动脚本命令?,服务,状态,系统,代码,脚本,工作,周期性,命令,文件,方法,Python脚本在Linux下如何自启动与定时任务的实例详解Linux在启linux当前进程命令?
linux当前进程命令?,系统,信息,工作,状态,命令,进程,情况,地址,软件,实时,linux常用命令1、linux系统常用操作命令如下:ls:全拼list,功能是列出目linux循环复制命令?
linux循环复制命令?,系统,文件,命令,目录,地址,源文件,文件夹,目标,文件名,路径,linux下怎么把一个文件复制到多个文件夹里可以使用cp命令来实linux下杀进程命令?
linux下杀进程命令?,系统,管理,进程,命令,名称,代码,终端,结束,指令,信号,Linux里面杀掉进程命令是什么?1、linux杀死进程一共分为4步,具体操作linux关于的进程命令?
linux关于的进程命令?,系统,进程,管理,命令,名称,代码,软件,信息,定期,状态,linux结束进程用什么命令【答案】:C 在Linux系统中,可以使用kill命linux下编写脚本命令?
linux下编写脚本命令?,代码,时间,工具,标准,系统,实战,平台,最新,网站,文件,linux写脚本,需要ls只显示前10个文件,怎么实现?在linux中如果用lslinux定时器脚本命令?
linux定时器脚本命令?,系统,代码,时间,工具,工作,定期,周期性,异常,任务,脚本,Linux设置定时任务打开终端窗口,并使用 crontab -e 命令编辑当前linux停止脚本命令行?
linux停止脚本命令行?,系统,工作,平台,命令,基础,第一,环境,信息,终端,程序,在linux系统里,如何用命令行实现在10分钟后关闭系统?1、shutdownlinux命令运行脚本?
linux命令运行脚本?,代码,系统,工作,设计,状态,命令,脚本,文件,目录,终端,运行linux脚本,遇到要按回车键,怎么让它自动应答,继续运行脚本?1、linux向进程发送命令?
linux向进程发送命令?,通信,地址,系统,时间,工作,信息,管理,状态,进程,数据,linux常用的命令有哪些1、linux常用命令如下:查看内核版本:uname-a