【问题标题】:Running several scripts in parallel bash scripts on remote machines在远程机器上以并行 bash 脚本运行多个脚本
【发布时间】:2020-05-05 21:13:49
【问题描述】:

在下面的 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 个脚本,因此所有脚本的运行将在几秒钟内完成,而远程机器上的脚本进程仍将运行到结束

【问题讨论】:

  • 对我来说似乎是一个足够公平的方法 - 你有什么顾虑?如果您在脚本末尾添加wait,它将等待所有后台任务结束后再终止脚本 - 否则后台任务可能会终止。
  • 我担心的是这个步骤很简单,也许我错过了什么
  • 哦...大声笑...那么它很简单:) ...记住最后的等待 - 它会很有用:)
  • “目标是在 25 台 diff 机器上运行所有 25 个脚本”...你的意思是要一共启动 625 个进程吗?

标签: bash shell ssh ps thredds


【解决方案1】:

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

#!/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

【讨论】:

  • 我会在管道前添加2>&1 来捕获错误消息。
  • 感谢 Jetchisel!您应该可以随意编辑答案(将 SO 视为 WIKI)。修改也会被审核。
猜你喜欢
  • 2011-06-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-01
  • 1970-01-01
  • 2016-04-02
  • 2016-08-03
相关资源
最近更新 更多