使用 GNU Parallel 通过 rsync 通过 LAN 进行集群计算

Using GNU Parallel for cluster computing over LAN with rsync

我有两台机器,我想使用 GNU Parallel 进行多个处理 'cat' 来自两台机器的一些文本文件的内容。

我有以下设置。

在本地机器的同一目录中,我有以下文件:

这是如果我使用 wordpress link 中的节点文件示例(如下),并且我的 IP 是 192.168.0.2。

None 这些文件被复制到远程机器上。我想要多个进程 'cat' 来自两台机器的每个 test?.txt 文件的内容。

最好是这样:

我已经能够按照 this wordpress example 使用节点文件远程执行多处理命令,但是 none 涉及远程文件回显。

到目前为止,我有如下内容:

parallel --sshloginfile nodefile --workdir . --basefile cmd.sh -a cmd.sh --trc ::: test1.txt test2.txt test3.txt

但这不起作用,并且正在从我的目录中删除文件而不是替换它们,并且会出现 rsync 错误。我(不幸的是)目前无法提供错误或复制设置。

我对并行非常缺乏经验,谁能指导我完成这项任务的语法?我无法在手册页或网络上找到答案(到目前为止)。

运行 Ubuntu 16.04 LTS 并使用最新版本的 GNU Parallel。

你犯了一些错误:

  • -a 用于给出一个输入源。它基本上是 ::::
  • 的别名
  • 在 GNU Parallel 的选项之后和 :::
  • 之前,你没有给 运行 命令
  • --trc 接受一个参数(即要传回的文件)。您没有要传回的文件,因此请改用 --transfer --cleanup

所以:

chmod +x cmd.sh
parallel --sshloginfile nodefile --workdir . --basefile cmd.sh --transfer --cleanup ./cmd.sh ::: test1.txt test2.txt test3.txt

不清楚您是否要将任何内容传输到远程机器,所以也许这才是正确答案:

parallel --sshloginfile nodefile --nonall --workdir . ./cmd.sh test1.txt test2.txt test3.txt