如何同时在多台Linux机器上触发某个shell脚本?

时间:2013-06-19 13:43:35

标签: linux shell triggers

我有一个批处理脚本,它必须通过plink [putty]在大约10台Linux机器上触发某个shell脚本。 但是当我触发shell脚本时,问题是控件转到shell脚本。它会运行大约10个小时,然后将控件返回到批处理。现在我的批处理进入第二台linux机器并等待10个小时等等......

我的要求是同时在所有linux机器上触发shell脚本。

它可以像触发shell脚本一样将ctrl返回到其他机器上的批量触发也行。

2 个答案:

答案 0 :(得分:0)

如果您使用bash作为shell,则应为其添加标记。 (请注意标签的“关注者”数量相对较少。)

假设有一个现代的Linux / Unix shell,问题的答案是将&字符附加到与远程机器建立连接的行。 &表示“在后台运行此流程”。

类似

#!/bin/bash 
# master script
ssh host1 "/path/to/remote/script/runMe" &
ssh host2 "/path/to/remote/script/runMe" &
ssh host3 "/path/to/remote/script/runMe" &
ssh host4 "/path/to/remote/script/runMe" &

听起来像你在找什么。

捕获日志信息并监控远程“runMe”的状态属于咨询事宜或至少需要100小时的实验。祝你好运。

IHTH

答案 1 :(得分:0)

使用GNU Parallel,您可以:

parallel --nonall -S host1,host2,host3,host4 /path/to/remote/script/runMe

GNU Parallel保证stdout和stderr的输出被捕获而不是混合。使用--tag,每行将在主机前面加上:

parallel --tag --nonall -S host1,host2,host3,host4 /path/to/remote/script/runMe >output.stdout 2>output.stderr

要了解详情,请观看介绍视频:https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1

10秒安装:

wget -O - pi.dk/3 | bash