首页 > 解决方案 > 在远程机器上以并行 bash 脚本运行多个脚本

问题描述

在以下 bash 脚本中,我们希望在远程机器上并行运行多个脚本

ssh $server_a  /tmp/activate_nodes.bash &
ssh $server_b  /tmp/activate_services.bash &
ssh $server_c  /tmp/activate_components.bash &
ssh $server_d  /tmp/activate_nfs.bash &
.
.
.

不确定将“ &”放在脚本或其他方法的末尾吗?

请注意,目标是在 25 台 diff 机器上运行所有 25 个脚本,因此所有脚本的运行将在几秒钟内完成,而远程机器上的脚本进程仍将运行直到结束。

标签: bashshellsshpsthredds

解决方案


并行运行这些都很好,除了交错输出。要保存输出以供以后分析,您还可以“发送”日志以供以后检查:

#!/usr/bin/env bash
ssh $server_a  /tmp/activate_nodes.bash      2>&1 | tee ${server_a}_$$.log &
ssh $server_b  /tmp/activate_services.bash   2>&1 | tee ${server_b}_$$.log &
ssh $server_c  /tmp/activate_components.bash 2>&1 | tee ${server_c}_$$.log &
ssh $server_d  /tmp/activate_nfs.bash        2>&1 | tee ${server_d}_$$.log &
wait

推荐阅读