使用GNU Parallel在带有rsync的局域网上进行集群计算



我有两台机器,我想使用GNU Parallel让多个进程"cat"来自这两台机器的一些文本文件的内容。

我有以下设置。

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

  • cmd.sh-一个包含以下内容的bash文件:"cat"$@">
  • test1.txt-包含以下内容的文本文件:"Test 1">
  • test2.txt-包含以下内容的文本文件:"测试2">
  • test3.txt-包含以下内容的文本文件:"测试3">
  • nodefile-一个包含以下内容的文本文件:

    2/:

    4/dan@192.168.0.3

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

这些文件都没有在远程计算机上复制。我想让多个进程"cat"每个测试的内容?。txt文件。

最好是:

  • 不会在远程机器上留下任何工件
  • 将保持本地目录的内容不变

根据这个wordpress示例,我已经能够使用nodefile远程执行多处理命令,但没有涉及远程文件回显的命令。

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

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

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

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

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

您犯了几个错误:

  • -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

相关内容

  • 没有找到相关文章

最新更新