在多台机器上并行运行脚本

2024-05-02

我有兴趣知道在多台机器的后台尽快启动脚本的最佳方法。目前,我正在这样做

为每个 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 并行时做错了什么?


GNU Parallel 默认情况下假设在哪台机器上运行作业并不重要 - 这对于计算来说通常是正确的。就您而言,这非常重要:您希望在每台机器上执行一项作业。另外,GNU Parallel 会给出一个数字作为 setup.pl 的参数,而你显然不希望这样。

幸运的是 GNU 并行does支持你想要使用的东西--nonall:

http://www.gnu.org/software/parallel/man.html#example__running_the_same_command_on_remote_computers http://www.gnu.org/software/parallel/man.html#example__running_the_same_command_on_remote_computers

我鼓励您也阅读并理解其余示例。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在多台机器上并行运行脚本 的相关文章