我有一个批处理脚本,它必须通过plink [putty]在大约10台Linux机器上触发某个shell脚本。 但是当我触发shell脚本时,问题是控件转到shell脚本。它会运行大约10个小时,然后将控件返回到批处理。现在我的批处理进入第二台linux机器并等待10个小时等等......
我的要求是同时在所有linux机器上触发shell脚本。
它可以像触发shell脚本一样将ctrl返回到其他机器上的批量触发也行。
答案 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