问题标签 [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 投票
2 回答
1791 浏览

bash - 在 GNU Parallel 中执行 SCP

我需要并行运行一些命令,包括 SCP。为此,我使用 GNU Parallel。问题是我不知道如何将密码传递给 SCP。这是一条类似于我正在运行的行:

并且如果ls找到3个文件,scp同时询问3次密码,我只能输入最后一个进程的密码来提示它。

我暂时解决了使用公钥连接的这个问题,但由于公司政策,这在未来不会成为一个选项。我阅读了 SCP 手册页,但找不到选项,但我非常确信 Parallel 应该有一个选项让我输入密码。

有人知道解决这个问题的方法吗?

编辑:我想知道是否有一种方法可以告诉parallel密码,以便它可以在scp每次要求时提供密码。也许是这样的:

但是指定的重定向STDIN是 forscp而不是 for lsor parallel

0 投票
2 回答
7873 浏览

bash - 使用 GNU 并行拆分

我正在将一个非常巨大的文件加载到 postgresql 数据库中。为此,我首先split在文件中使用以获取较小的文件(每个 30Gb),然后使用 and 将每个较小的文件加载到数据库GNU Parallelpsql copy

问题是拆分文件大约需要 7 个小时,然后它开始为每个核心加载一个文件。我需要一种方法来告诉split每次它完成写入文件时将文件名打印到std输出,这样我就可以将它通过管道传输到Parallel它并在完成写入时开始加载文件split。像这样的东西:

我已阅读split手册页,但找不到任何内容。有没有办法用split或任何其他工具做到这一点?

0 投票
1 回答
1535 浏览

cluster-computing - 远程集群上的过时 NFS 文件句柄问题

我需要使用一个名为ngspice的工具运行一堆模拟,并且由于我想运行一百万个模拟,我将它们分布在一组机器上(主机+从机开始,每个机器有 12 个内核)。

这是命令: ngspice deck_1.sp; ngspice deck_2.spETC。,

第 1 步:使用 python 脚本生成这些 sp 文件。

第 2 步:Python 调用GNU 并行在主/从之间分发 sp 文件并使用 ngspice 运行模拟

第 3 步:我对结果进行后处理(python 脚本)。

我一次只生成和处理 1000 个文件以节省磁盘空间。所以上面的步骤 1 到 3 循环重复,直到模拟一百万个文件。

现在,我的问题是:

当我第一次执行循环时,我没有问题。这些文件分布在主/从之间,直到 1000 次模拟完成。当循环第二次开始时,我清除了现有的 sp 文件并重新生成它们(步骤 1)。现在,当我出于某种奇怪的原因执行步骤 2 时,没有检测到某些文件。经过一些调试,对于在步骤 1 中创建的某些 sp 文件,我得到的错误是“过时的 NFS 文件句柄”和“没有这样的文件或目录 deck_21.sp”等。

我暂停了我的 python 脚本并ls在目录中执行了一个“”,我看到这些文件确实存在,但就像错误指出的那样,这是因为过时的 NFS 文件句柄。此链接建议我重新安装客户端等,但我登录到我没有管理员权限安装的机器。有没有办法解决这个问题?

谢谢!

0 投票
1 回答
575 浏览

parallel-processing - GNU Parallel:延迟发送到远程服务器的第一个作业

我有一个 gnu 并行脚本,可将数据(100,000 个作业分布到 100 个远程服务器)导入中央数据库。第一份工作正在猛烈抨击中央数据库,因为它们几乎同时完成。之后的工作最终分散开来,不要尝试同时导入所有工作。

有没有办法延迟每个远程服务器的第一个作业的执行?所以脚本可以说“现在运行进程#1到server1,在5秒内运行进程#2到server2,在10秒内运行进程#3到server3,在20秒内运行进程#4到服务器4,......,. ……”。在第一批被发送到每个服务器之后,id 就像其他进程一样尽快运行。

有这个参数吗?

0 投票
2 回答
136 浏览

parallel-processing - 使用最大远程服务器

我试图将命令分发到 100 台远程计算机,但注意到命令只发送到 16 台远程计算机。我的本地机器有 16 个内核。为什么并行只使用 16 台远程计算机而不是 100 台?

并行 --eta --sshloginfile list_of_100_remote_computers.txt < list_of_commands.txt

0 投票
1 回答
5536 浏览

bash - 如何向 GNU Parallel 提供大量命令?

我正在评估是否可以使用GNU Parallel来搜索并行存储在系统上的文件。系统上一年中的每一天 (doy) 只能有一个文件(因此每年最多 366 个文件)。假设系统上有 3660 个文件(大约 10 年的数据)。该系统可以是多 CPU 多核 Linux 或多 CPU Solaris。

我正在存储要在数组中的文件上运行的搜索命令(每个文件一个命令)。这就是我现在正在做的事情(使用 bash),但是我无法控制并行启动多少搜索(绝对不想一次启动所有 3660 搜索):

如果我要使用parallel(它会自动计算出最大 CPUs/cores 并且只开始并行搜索这么多),我如何才能cmds并行重用数组并重写上面的代码?另一种选择是将所有命令写入文件,然后执行cat cmd_file | parallel

0 投票
1 回答
955 浏览

linux - 与组捕获并行 sed

我必须处理一个大文件,并且一直在阅读有关并行命令的信息,以在使用 sed、sort 等时尝试使用多个核心处理器。所以我首先想改变每四个的第一行(因为这种文件的命名约定 - FastQ 格式)。

例如,这将是一组四人,我想修改第一行:

使用下一个命令,我完成了工作:

但是,当使用并行时,似乎无法识别组捕获括号:

删除反斜杠或使用 sed -r 命令告诉我:

任何人都可以对此有所了解吗?

非常感谢您

0 投票
4 回答
24392 浏览

parallel-processing - GNU并行根本不工作

一段时间以来,我一直在尝试使用 GNU 并行,但我根本无法让它发挥作用!

例如,运行(在非空目录中!):

似乎它只是将每个参数作为命令执行,这没有任何意义。

我尝试过 bash、zsh、tcsh、csh 和 sh,但无济于事。

0 投票
3 回答
12054 浏览

bash - 将while循环与从bash中的文件读取的数组并行化

我在 Bash 中有一个 while 循环,处理方式如下:

它从具有此结构的文件中读取,以供参考:

依此类推(制表符分隔)。

我想使用 GNU 并行并行化这个循环(因为条目很多并且处理可能很慢),但是这些示例不清楚我将如何将每一行分配给数组,就像我在这里所做的那样。

什么是可能的解决方案(GNU 并行工作的替代方案)?

0 投票
1 回答
930 浏览

bash - 如何启动多个子进程,这些子进程将自动接收发送给父进程的信号

我想创建一个 Bash 脚本来启动并行子进程。有没有办法让子脚本仍然接收发送到父进程的信号?

这大致是我想要启动子进程的方式,但这不符合我的信号标准。

因为这在 C 程序(使用fork/exec)中自动工作,所以我相信不使用trap基于 - 的信号转发应该是可能的——它本身可以在信号被转发之前被中断。

一种解决方法是使用GNU-parallel. 我不知道它的机制是什么,但它解决了这个问题——只要您愿意将循环重组为xargs样式语法。 如果使用该选项,则GNU-parallel不能解决问题--semaphore

我认为答案就在这里,但我不知道如何将其翻译为 Bash: Signal sent to both child and parent process