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



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

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

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

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

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

所以GNU Parallel没有办法根据服务器的不同使--workdir不同(除了相对的目录:.和...(。

那么,你能做些什么呢?

如果其中一个目录仅存在于其中一台计算机上,则可以在运行脚本之前cd该目录。cd将在没有目录的计算机上失败:

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

相关内容

  • 没有找到相关文章

最新更新