我有一个分析程序和一个包含数据的文本文件,为了便于说明,我将分别调用wibble
和data.txt
。
我尝试了一个简单的for
循环来处理我的所有数据:
对于我在 $(cat data.txt); 做 颤抖 $i 完毕
但要一一完成分析,需要很长的时间。
所以我试着让它为每个数据分拆单独的工作:
对于我在 $(cat data.txt); 做 ( wibb $i ) & 完毕
但是运行这么多分析进程会导致内存崩溃!
所以我想以五人一组的方式启动分析过程。我想获取前五个数据项,对它们进行分析;然后拿下五个并做同样的事情;等等。
如前一篇文章(下文)所述,如果不使用“并行”程序,我该如何做到这一点?我的机构工作站上没有 sudo 权限来安装此应用程序,因此我正在尝试使用更简单的代码来实现这一目标。
https://unix.stackexchange.com/questions/299346/running-commands-at-once
https://unix.stackexchange.com/questions/361505/how-to-control-for-loop
使用 GNU
xargs
:最多可以运行 5 个并行
wibble
命令,P
每个命令从file
as 参数中获取 1 个单词。对于 GNU
xargs
,单词由空格、制表符或换行符序列分隔,单引号、双引号和反斜杠被识别为这些分隔符和彼此的引用运算符。对于要成为文件每一行的单词
-d '\n'
,添加一个.对于要在您的方法中处理 on 的单词
bash
,默认情况下(除非已修改),它们以$IFS
空格、制表符和换行符分隔,并且还受文件名生成的影响,您可以执行以下操作:也就是说,让 shell 执行 split+glob 并将
printf
生成的单词传递给xargs
.