You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在6台服务器先并行执行command1/2,再执行command3/4?

完善后的Shell脚本实现

我懂你的需求:要让6台服务器各自并行跑command1和command2,等所有这些远程命令全部执行完毕后,再启动本地的command3和command4。下面是补全并优化后的完整脚本:

#!/bin/sh
# 实例详情:用数组统一管理服务器列表,比单独定义变量更易维护
Servers=(
    "<Server1>"
    "<Server2>"
    "<Server3>"
    "<Server4>"
    "<Server5>"
    "<Server6>"
)

# 遍历所有服务器,并行启动每台机器的command1和command2
for server in "${Servers[@]}"; do
    ssh root@"$server" "command1" &
    ssh root@"$server" "command2" &
done

# 等待所有后台运行的ssh进程全部完成
wait

# 所有远程命令执行结束后,运行本地的command3和command4
command3
command4

关键逻辑说明:

  • 数组管理服务器:把6台服务器放进数组里,后续要增减机器时,直接修改数组即可,不用重复写大量重复的ssh命令。
  • 后台并行执行:每个ssh命令后加&,让远程命令在后台运行,这样所有服务器的command1和command2会同时启动,最大化执行效率。
  • wait命令的核心作用:这个命令会暂停脚本执行,直到所有后台启动的进程(也就是所有远程ssh任务)都执行完成,完美实现“等所有远程命令跑完再走下一步”的要求。
  • 本地命令执行:wait返回后,就可以安全执行command3和command4了,如果想让这两个本地命令也并行,给它们后面加&,再补一个wait就行。

如果需要校验远程命令的执行结果(比如某个服务器的命令失败就终止后续流程),可以给ssh命令添加退出码检查,不过如果只需要等待所有命令执行完毕(不管成功与否),上面的脚本就完全够用。

内容的提问来源于stack exchange,提问作者goe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:30:46