关于 —onall 的 GNU 并行错误
GNU parallel errors on —onall
我正在尝试通过 ssh 发送一个 bash 函数并在所有远程主机上执行它。像这样:
f() { echo ; }
parallel -—onall -S host1,host2 “$(typeset -f f); f” ::: foo
但是,这会导致以下错误:
/bin/bash: -c: line 0: unexpected EOF while looking for matching `''
/bin/bash: -c: line 1: syntax error: unexpected end of file
/bin/bash: \{\ : command not found
/bin/bash: \ \ \ \ echo\ $1: command not found
/bin/bash: -c: line 0: unexpected EOF while looking for matching `''
/bin/bash: -c: line 1: syntax error: unexpected end of file
/bin/bash: -c: line 0: unexpected EOF while looking for matching `''
/bin/bash: -c: line 1: syntax error: unexpected end of file
/bin/bash: \{\ : command not found
/bin/bash: \ \ \ \ echo\ $1: command not found
/bin/bash: -c: line 0: unexpected EOF while looking for matching `''
/bin/bash: -c: line 1: syntax error: unexpected end of file
如果我仅在一台主机上删除 —-onall 和 运行 函数,则整个代码段将完美运行:
parallel -S host1,host2 “$(typeset -f f); f” ::: foo
给出输出:foo
任何关于可能出错的见解都会有所帮助:-)。我使用的是 20180422 版本。
您正在寻找env_parallel
:
f() { echo foo; echo "$@"; }
env_parallel -S host1,host2 --onall f ::: a b c
如果你得到:
bash: /usr/bin/perl: Argument list too long
env_parallel: Error: Your environment is too big.
env_parallel: Error: You can try 3 different approaches:
env_parallel: Error: 1. Run 'env_parallel --session' before you set
env_parallel: Error: variables or define functions.
env_parallel: Error: 2. Use --env and only mention the names to copy.
env_parallel: Error: 3. Try running this in a clean environment once:
env_parallel: Error: env_parallel --record-env
env_parallel: Error: And then use '--env _'
env_parallel: Error: For details see: man env_parallel
然后尝试这 3 种不同的方法:
unset f
env_parallel --session
f() { echo foo; echo "$@"; }
env_parallel -S host1,host2 --onall f ::: a b c
或:
f() { echo foo; echo "$@"; }
env_parallel --env f -S host1,host2 --onall f ::: a b c
或:
unset f
env_parallel --record-env
f() { echo foo; echo "$@"; }
env_parallel --env _ -S host1,host2 --onall f ::: a b c
详情见:man env_parallel
或升级到20180922:
parallel-20180922 --onall -S host1,host2 "$(typeset -f f); f" ::: a b c
我正在尝试通过 ssh 发送一个 bash 函数并在所有远程主机上执行它。像这样:
f() { echo ; }
parallel -—onall -S host1,host2 “$(typeset -f f); f” ::: foo
但是,这会导致以下错误:
/bin/bash: -c: line 0: unexpected EOF while looking for matching `''
/bin/bash: -c: line 1: syntax error: unexpected end of file
/bin/bash: \{\ : command not found
/bin/bash: \ \ \ \ echo\ $1: command not found
/bin/bash: -c: line 0: unexpected EOF while looking for matching `''
/bin/bash: -c: line 1: syntax error: unexpected end of file
/bin/bash: -c: line 0: unexpected EOF while looking for matching `''
/bin/bash: -c: line 1: syntax error: unexpected end of file
/bin/bash: \{\ : command not found
/bin/bash: \ \ \ \ echo\ $1: command not found
/bin/bash: -c: line 0: unexpected EOF while looking for matching `''
/bin/bash: -c: line 1: syntax error: unexpected end of file
如果我仅在一台主机上删除 —-onall 和 运行 函数,则整个代码段将完美运行:
parallel -S host1,host2 “$(typeset -f f); f” ::: foo
给出输出:foo
任何关于可能出错的见解都会有所帮助:-)。我使用的是 20180422 版本。
您正在寻找env_parallel
:
f() { echo foo; echo "$@"; }
env_parallel -S host1,host2 --onall f ::: a b c
如果你得到:
bash: /usr/bin/perl: Argument list too long
env_parallel: Error: Your environment is too big.
env_parallel: Error: You can try 3 different approaches:
env_parallel: Error: 1. Run 'env_parallel --session' before you set
env_parallel: Error: variables or define functions.
env_parallel: Error: 2. Use --env and only mention the names to copy.
env_parallel: Error: 3. Try running this in a clean environment once:
env_parallel: Error: env_parallel --record-env
env_parallel: Error: And then use '--env _'
env_parallel: Error: For details see: man env_parallel
然后尝试这 3 种不同的方法:
unset f
env_parallel --session
f() { echo foo; echo "$@"; }
env_parallel -S host1,host2 --onall f ::: a b c
或:
f() { echo foo; echo "$@"; }
env_parallel --env f -S host1,host2 --onall f ::: a b c
或:
unset f
env_parallel --record-env
f() { echo foo; echo "$@"; }
env_parallel --env _ -S host1,host2 --onall f ::: a b c
详情见:man env_parallel
或升级到20180922:
parallel-20180922 --onall -S host1,host2 "$(typeset -f f); f" ::: a b c