问题标签 [gnu-parallel]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
13996 浏览

bash - 使用 GNU 并行拆分命令行参数

使用GNU parallelhttp ://www.gnu.org/software/parallel/

我有一个带有两个参数的程序,例如

我正在使用生成文件名对的脚本,但这会带来问题,因为脚本的结果是单个字符串 - 而不是一对。像:

GNU parallel似乎有很多技巧,我想知道是否有一个用于在分隔符周围分割文本的技巧:

简单的解决方法是在 prog 中手动拆分 args,但我想知道在GNU parallel.

0 投票
4 回答
13361 浏览

linux - “查找”和“ls”与 GNU 并行

我正在尝试使用GNU parallel将大量文件发布到 Web 服务器。在我的目录中,我有一些文件:

我有一个看起来像这样的 shell 脚本:

脚本中还有一些其他内容,但这是最简单的示例。我尝试执行以下命令:

这是GNU parallel页面显示为对目录中的文件进行操作的“正常”方式。这似乎将文件名传递到我的脚本中,但 curl 抱怨它无法加载传入的数据文件。但是,如果我这样做:

它工作正常。向我的脚本传递参数的方式ls和传递方式之间有区别吗?find还是我需要在该脚本中做一些额外的事情?

0 投票
1 回答
162 浏览

shell - 用户运行脚本时如何忽略用户的shell

我必须按用户运行脚本。该用户的外壳已更改为/script/script1文件中/etc/passwd。当我运行脚本时,它会将 SHELL 作为 /script/script1。

0 投票
2 回答
1600 浏览

ssh - 使用 GNU 并行时如何限制新的传出 ssh 连接的速率?

背景: OpenSSH的默认设置MaxStartups是 10:30:60,大多数 Linux 发行版都保持这个默认设置。这意味着在 sshd 开始丢弃 30% 的新传入连接之前,一次只能有 10 个 ssh 连接正在交换密钥和进行身份验证,并且在 60 个未经身份验证的连接时,所有新连接都将被丢弃。建立连接后,将不计入此限制。参见例如这个问题

问题:我正在使用 GNU 并行在大量后端节点上运行一些繁重的数据处理。我需要通过单个前端机器访问这些节点,并且我正在使用 ssh:sProxyCommand设置隧道以透明地访问后端。但是,我一直在达到最大未经身份验证的连接限制,因为并行生成的 ssh 连接比前端可以一次验证的要多。

我尝试过ControlMaster auto重用与前端的单个连接,但没有运气。

问题:如何限制打开新 ssh 连接的速率?我可以控制在给定时间打开多少未经身份验证的连接,并延迟新连接直到另一个连接通过身份验证?

0 投票
1 回答
2987 浏览

environment-variables - 使用 GNU Parallel 继承环境变量

我想在 GNU Parallel 中继承环境变量。我有几个“脚本”(实际上只是命令列表,设计用于 GNU Parallel),每行都有数百行,它们都调用不同的外部程序。但是,这些外部程序(我无法控制)需要在运行之前设置几个环境变量。

在本地设置/导出它们似乎没有帮助,而且我看不到任何方法可以将此信息添加到配置文件中。

文档似乎没有任何内容,类似的 SO 页面建议将命令包装在脚本中。然而,这似乎是一个不优雅的解决方案。有没有办法导出当前环境,或者在脚本中指定所需的变量?

谢谢!

0 投票
1 回答
266 浏览

shell - GNU 并行处理

我有以下要运行的脚本GNU parallel,它是一个需要运行n时间的 for 循环。我怎样才能做到这一点GNU parallel

0 投票
1 回答
457 浏览

bash - 使用 bash -c 和 Globbing

我在一个命令上运行 gnu-parallel,该命令在从 bash shell 运行时运行良好,但在使用 -c 标志使用 bash 并行执行它时返回错误。我认为这与我正在使用的特殊 globbing 表达式有关。

这成功返回。

启用标志后,命令失败

该手册仅指定 -c 调用 bash 来读取字符串的参数,我是否遗漏了什么?

编辑:我应该补充一点,我需要它从 gnu 并行字符串运行,因此最终生成的命令必须可由 /bin/bash -c "Some Command" 运行

0 投票
2 回答
1876 浏览

linux - GNU 并行负载均衡

我正在尝试找到一种在集群上执行 CPU 密集型并行作业的方法。我的目标是为每个内核安排一个作业,以便每个作业在安排后都有望获得 100% 的 CPU 利用率。这是迄今为止提出的:

文件 build_sshlogin.sh

该脚本由 GNU 并行使用,如下所示:

这种技术的问题是,如果有人在集群中的服务器上启动另一个 CPU 密集型作业,而不检查 CPU 使用情况,那么脚本最终会将作业调度到正在使用的核心。此外,如果在第一个作业完成时 CPU 使用率发生了变化,那么新释放的内核将不会被 GNU 并行调度用于剩余作业。

所以我的问题如下:有没有办法让 GNU 在调度每个作业之前并行重新计算空闲内核/服务器?欢迎任何其他解决问题的建议。

注意:在我的集群中,所有核心都具有相同的频率。如果有人可以概括以解释不同的频率,那也是受欢迎的。

0 投票
2 回答
439 浏览

gnu-parallel - bash gnu 并行 argfile 语法

我刚刚发现了 GNU 并行,我在运行一个简单的并行任务时遇到了一些麻烦。我有一个在多个值上运行的模拟,我想将它拆分为使用命令行参数并行运行。从docs看来,您似乎可以parallel mycommand :::: myargfile在其中myargfile并行运行包含您想要提供命令的各种参数。但是,我没有看到任何关于如何列出 args 的信息,并假设myargfile像这样可以工作:

mycommand --pmin 0 --pmax 0.1执行没有问题。但是当我运行时,parallel mycommand :::: myargfile我得到error: unknown option pmin 0 --pmax 0.1(捕获并解码礼貌提升程序选项)。 parallel echo :::: myargfile正确打印出参数。就好像它们被包装在一个程序无法读取的字符串中,并且不像它们来自标准 bash 脚本一样。

这是怎么回事?我怎样才能使这项工作?

0 投票
1 回答
781 浏览

parallel-processing - GNU 并行有两个参数

我有一个 C-shell 脚本,其中有一个名为$hosts_string以下形式的变量:

我还有一个名为$chrs_string以下形式的变量:

我还有一个名为的变量$inputFn,它指定了我需要处理的文本文件。

我想做的是让每个主机运行一个doStuff对 的每个成员调用的命令$chrs_string,并将$inputFn其作为输入文件名参数。

我尝试了以下方法:

如果这可行,这应该chr1通过chrM命令的输出创建文件doStuff,但我什么也没得到。并行完成而没有发出错误,但没有输出。

如果我不使用命令本身就可以正常工作parallel,所以它不是命令,而是我如何为parallel.

为了确认这一点,我尝试了以下方法:

如果可行,并且$inputFn是 (例如) /foo/bar,那么我将获得 (例如) 一个名为 的文件chr1,其中包含以下字符串:

如何调整我的命令,parallel以便它正确地循环遍历每个组合?$chrs_string$inputFn