如何在GNU并行中为不同的主机使用不同的--workdir

时间:2017-07-22 04:32:23

标签: linux ssh gnu-parallel

我想在本地计算机和远程计算机上执行script.sh。但是,在本地计算机上,script.sh文件位于~/dir1/内,而远程计算机位于/dir2内。

我尝试过的是:我在本地机器上运行~/dir1/

  parallel --workdir /dir2 -S remotemachine -S : ./script.sh ::: someargs

在远程计算机上运行正常,但在本地计算机并行上也尝试在script.sh内运行/dir2

1 个答案:

答案 0 :(得分:1)

作业不知道它将在哪台服务器上运行。这是(除其他事项外)由于--retries将重试相同的作业,但在另一台服务器上。

因此,GNU Parallel无法根据服务器使--workdir不同(除了相对目录:。和...)。

那么你可以 做什么呢?

如果其中一个目录只存在于其中一台计算机上,那么您可以在运行脚本之前cdcd将在没有目录的机器上失败:

parallel -S server1,: 'cd dir-on-both; cd dir-on-one; script.sh' ::: some args

使用通用的符号链接:

ssh server1 ln -s dir1 link1 
ln -s dir2 link1
parallel --workdir link1/ -S server1,: script.sh ::: some args

如果仅由可执行文件引起,请将PATH设置为包含两个目录:

PATH=$PATH:dir1:dir2
parallel --env PATH -S server1,: script.sh ::: some args