我想在本地计算机和远程计算机上执行script.sh
。但是,在本地计算机上,script.sh
文件位于~/dir1/
内,而远程计算机位于/dir2
内。
我尝试过的是:我在本地机器上运行~/dir1/
:
parallel --workdir /dir2 -S remotemachine -S : ./script.sh ::: someargs
在远程计算机上运行正常,但在本地计算机并行上也尝试在script.sh
内运行/dir2
答案 0 :(得分:1)
作业不知道它将在哪台服务器上运行。这是(除其他事项外)由于--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