代码之家  ›  专栏  ›  技术社区  ›  Free Url

使用GNU并行在局域网上使用rsync进行集群计算

  •  1
  • Free Url  · 技术社区  · 6 年前

    我有两台机器,我想使用gnu parallel让多个进程“cat”来自两台机器的一些文本文件的内容。

    我有以下设置。

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

    • cmd.sh-一个包含以下内容的bash文件:'cat“$@”
    • test1.txt-一个文本文件,内容为:“test 1”
    • test2.txt-包含“test 2”内容的文本文件
    • test3.txt-包含内容的文本文件:“test 3”
    • nodefile-包含以下内容的文本文件:

      2:

      4/daN@192.168.0.3

    如果我使用的是wordpress链接中的nodefile示例(如下),我的IP是192.168.0.2。

    这些文件都不会在远程计算机上复制。我想让多个进程“cat”每个测试的内容?两台计算机的.txt文件。

    最好是这样:

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

    我已经能够用nodefile远程执行多处理命令 this wordpress example 但不涉及远程回送文件。

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

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

    但这不起作用,正在从我的目录中删除文件,而不是替换它们,同时也会导致rsync错误。我(很遗憾)目前无法提供错误,也无法复制设置。

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

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

    1 回复  |  直到 6 年前
        1
  •  1
  •   Ole Tange    6 年前

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