问题标签 [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.
bash - 在 GNU Parallel 中执行 SCP
我需要并行运行一些命令,包括 SCP。为此,我使用 GNU Parallel。问题是我不知道如何将密码传递给 SCP。这是一条类似于我正在运行的行:
并且如果ls
找到3个文件,scp同时询问3次密码,我只能输入最后一个进程的密码来提示它。
我暂时解决了使用公钥连接的这个问题,但由于公司政策,这在未来不会成为一个选项。我阅读了 SCP 手册页,但找不到选项,但我非常确信 Parallel 应该有一个选项让我输入密码。
有人知道解决这个问题的方法吗?
编辑:我想知道是否有一种方法可以告诉parallel
密码,以便它可以在scp
每次要求时提供密码。也许是这样的:
但是指定的重定向STDIN
是 forscp
而不是 for ls
or parallel
。
bash - 使用 GNU 并行拆分
我正在将一个非常巨大的文件加载到 postgresql 数据库中。为此,我首先split
在文件中使用以获取较小的文件(每个 30Gb),然后使用 and 将每个较小的文件加载到数据库GNU Parallel
中psql copy
。
问题是拆分文件大约需要 7 个小时,然后它开始为每个核心加载一个文件。我需要一种方法来告诉split
每次它完成写入文件时将文件名打印到std输出,这样我就可以将它通过管道传输到Parallel
它并在完成写入时开始加载文件split
。像这样的东西:
我已阅读split
手册页,但找不到任何内容。有没有办法用split
或任何其他工具做到这一点?
cluster-computing - 远程集群上的过时 NFS 文件句柄问题
我需要使用一个名为ngspice的工具运行一堆模拟,并且由于我想运行一百万个模拟,我将它们分布在一组机器上(主机+从机开始,每个机器有 12 个内核)。
这是命令:
ngspice deck_1.sp
; ngspice deck_2.sp
ETC。,
第 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 文件句柄。此链接建议我重新安装客户端等,但我登录到我没有管理员权限安装的机器。有没有办法解决这个问题?
谢谢!
parallel-processing - GNU Parallel:延迟发送到远程服务器的第一个作业
我有一个 gnu 并行脚本,可将数据(100,000 个作业分布到 100 个远程服务器)导入中央数据库。第一份工作正在猛烈抨击中央数据库,因为它们几乎同时完成。之后的工作最终分散开来,不要尝试同时导入所有工作。
有没有办法延迟每个远程服务器的第一个作业的执行?所以脚本可以说“现在运行进程#1到server1,在5秒内运行进程#2到server2,在10秒内运行进程#3到server3,在20秒内运行进程#4到服务器4,......,. ……”。在第一批被发送到每个服务器之后,id 就像其他进程一样尽快运行。
有这个参数吗?
parallel-processing - 使用最大远程服务器
我试图将命令分发到 100 台远程计算机,但注意到命令只发送到 16 台远程计算机。我的本地机器有 16 个内核。为什么并行只使用 16 台远程计算机而不是 100 台?
并行 --eta --sshloginfile list_of_100_remote_computers.txt < list_of_commands.txt
bash - 如何向 GNU Parallel 提供大量命令?
我正在评估是否可以使用GNU Parallel来搜索并行存储在系统上的文件。系统上一年中的每一天 (doy) 只能有一个文件(因此每年最多 366 个文件)。假设系统上有 3660 个文件(大约 10 年的数据)。该系统可以是多 CPU 多核 Linux 或多 CPU Solaris。
我正在存储要在数组中的文件上运行的搜索命令(每个文件一个命令)。这就是我现在正在做的事情(使用 bash),但是我无法控制并行启动多少搜索(绝对不想一次启动所有 3660 搜索):
如果我要使用parallel
(它会自动计算出最大 CPUs/cores 并且只开始并行搜索这么多),我如何才能cmds
并行重用数组并重写上面的代码?另一种选择是将所有命令写入文件,然后执行cat cmd_file | parallel
linux - 与组捕获并行 sed
我必须处理一个大文件,并且一直在阅读有关并行命令的信息,以在使用 sed、sort 等时尝试使用多个核心处理器。所以我首先想改变每四个的第一行(因为这种文件的命名约定 - FastQ 格式)。
例如,这将是一组四人,我想修改第一行:
使用下一个命令,我完成了工作:
但是,当使用并行时,似乎无法识别组捕获括号:
删除反斜杠或使用 sed -r 命令告诉我:
任何人都可以对此有所了解吗?
非常感谢您
parallel-processing - GNU并行根本不工作
一段时间以来,我一直在尝试使用 GNU 并行,但我根本无法让它发挥作用!
例如,运行(在非空目录中!):
似乎它只是将每个参数作为命令执行,这没有任何意义。
我尝试过 bash、zsh、tcsh、csh 和 sh,但无济于事。
bash - 将while循环与从bash中的文件读取的数组并行化
我在 Bash 中有一个 while 循环,处理方式如下:
它从具有此结构的文件中读取,以供参考:
依此类推(制表符分隔)。
我想使用 GNU 并行并行化这个循环(因为条目很多并且处理可能很慢),但是这些示例不清楚我将如何将每一行分配给数组,就像我在这里所做的那样。
什么是可能的解决方案(GNU 并行工作的替代方案)?
bash - 如何启动多个子进程,这些子进程将自动接收发送给父进程的信号
我想创建一个 Bash 脚本来启动并行子进程。有没有办法让子脚本仍然接收发送到父进程的信号?
这大致是我想要启动子进程的方式,但这不符合我的信号标准。
因为这在 C 程序(使用fork/exec
)中自动工作,所以我相信不使用trap
基于 - 的信号转发应该是可能的——它本身可以在信号被转发之前被中断。
一种解决方法是使用GNU-parallel
. 我不知道它的机制是什么,但它解决了这个问题——只要您愿意将循环重组为xargs
样式语法。 如果使用该选项,则GNU-parallel
不能解决问题。--semaphore
我认为答案就在这里,但我不知道如何将其翻译为 Bash: Signal sent to both child and parent process。