使用 GNU Parallel 通过 rsync 通过 LAN 进行集群计算
Using GNU Parallel for cluster computing over LAN with rsync
我有两台机器,我想使用 GNU Parallel 进行多个处理 'cat' 来自两台机器的一些文本文件的内容。
我有以下设置。
在本地机器的同一目录中,我有以下文件:
- cmd.sh - bash 文件,内容为:'cat "$@"'
- test1.txt - 包含内容的文本文件:'Test 1'
- test2.txt - 包含内容的文本文件:'Test 2'
- test3.txt - 包含内容的文本文件:'Test 3'
nodefile - 包含以下内容的文本文件:
2/:
4/丹@192.168.0.3
这是如果我使用 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
我有两台机器,我想使用 GNU Parallel 进行多个处理 'cat' 来自两台机器的一些文本文件的内容。
我有以下设置。
在本地机器的同一目录中,我有以下文件:
- cmd.sh - bash 文件,内容为:'cat "$@"'
- test1.txt - 包含内容的文本文件:'Test 1'
- test2.txt - 包含内容的文本文件:'Test 2'
- test3.txt - 包含内容的文本文件:'Test 3'
nodefile - 包含以下内容的文本文件:
2/:
4/丹@192.168.0.3
这是如果我使用 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