我很想知道在多台机器的后台尽快启动脚本的最佳方式。目前,我正在这样做
为每个 IP 地址运行
ssh user@ip -t "perl ~/setup.pl >& ~/log &" &
但这需要时间,因为它会逐一尝试通过 SSH 连接到每一个以在该机器的后台启动 setup.pl。这需要时间,因为我有大量机器来启动此脚本。
我尝试使用 GNU 并行,但无法使其正常工作:
seq COUNT | parallel -j 1 -u -S ip1,ip2,... perl ~/setup.pl >& ~/log
但是好像不行,我在目标机器上看到GNU并行启动的脚本,但是停滞不前。我在日志中没有看到任何内容。
我在使用 GNU parallel 时做错了什么?
最佳答案
GNU Parallel 默认假定它在哪台机器上运行作业并不重要——这通常适用于计算。就您而言,这很重要:您希望每台机器上都有一份工作。此外,GNU Parallel 会给出一个数字作为 setup.pl 的参数,而您显然不希望这样。
幸运的是,GNU Parallel确实使用--nonall支持您想要的:
http://www.gnu.org/software/parallel/man.html#example__running_the_same_command_on_remote_computers
我鼓励您也阅读并理解其余示例。
关于bash - 在多台机器上并行运行脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17006243/