我想在本地机器和远程机器上执行我的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