Вы ищете 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