如何在 GNU 并行中将参数发送到 bash 脚本
How to send arguments to bash script in GNU parallel
我想使用 GNU parallel 并行执行一些命令,但我不知道如何将参数发送到我的 bash 脚本。
我的bash_script.sh:
scp .zip xxx@1.com:~/
scp .zip xxx@2.com:~/
scp .zip xxx@3.com:~/
scp .zip xxx@4.com:~/
scp .zip xxx@5.com:~/
我可以将参数发送到bash_script并按顺序执行它。
bash bash_script.sh argument
但是如何并行呢?
parallel -a bash_script argument
也许是这样的:
for server in server1 server2 server 3
do
scp "" $server: &
done
&
导致作业在后台 运行。如果我不明白你的要求,请澄清。
对我有用的解决方案是将命令写入文本文件(例如:commands.txt)并执行 parallel:
parallel -j 2 < commands.txt
parallel
可以并行执行单个 进程 ,但脚本通常旨在 运行 作为单个进程。
你可以做到
parallel scp "" xxx@{}1.xyz.com: ::: {1..5}
或者如果您真的想将脚本文件拆分成单独的行
sed "s#$1##g" bash_script.sh | parallel
如果脚本只是静态文本,您可以让 parallel
逐行阅读它;但是 parallel
在该上下文中没有 </code> 的值,因此我们将其替换,然后通过管道将替换的行用于并行执行。</p>
<p>切线地,注意 <a href="">proper variable quoting</a> 并且不要在 Bash 脚本上放置 <code>.sh
扩展名。 (基本上不要在任何脚本上添加任何扩展名。)
bash_script.sh
parallel scp "" xxx@{}.com: ::: {1..5}
用法:
bash bash_script.sh argument
我想使用 GNU parallel 并行执行一些命令,但我不知道如何将参数发送到我的 bash 脚本。
我的bash_script.sh:
scp .zip xxx@1.com:~/
scp .zip xxx@2.com:~/
scp .zip xxx@3.com:~/
scp .zip xxx@4.com:~/
scp .zip xxx@5.com:~/
我可以将参数发送到bash_script并按顺序执行它。
bash bash_script.sh argument
但是如何并行呢?
parallel -a bash_script argument
也许是这样的:
for server in server1 server2 server 3
do
scp "" $server: &
done
&
导致作业在后台 运行。如果我不明白你的要求,请澄清。
对我有用的解决方案是将命令写入文本文件(例如:commands.txt)并执行 parallel:
parallel -j 2 < commands.txt
parallel
可以并行执行单个 进程 ,但脚本通常旨在 运行 作为单个进程。
你可以做到
parallel scp "" xxx@{}1.xyz.com: ::: {1..5}
或者如果您真的想将脚本文件拆分成单独的行
sed "s#$1##g" bash_script.sh | parallel
如果脚本只是静态文本,您可以让 parallel
逐行阅读它;但是 parallel
在该上下文中没有 </code> 的值,因此我们将其替换,然后通过管道将替换的行用于并行执行。</p>
<p>切线地,注意 <a href="">proper variable quoting</a> 并且不要在 Bash 脚本上放置 <code>.sh
扩展名。 (基本上不要在任何脚本上添加任何扩展名。)
bash_script.sh
parallel scp "" xxx@{}.com: ::: {1..5}
用法:
bash bash_script.sh argument